Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Ulukai

Verificar se um objeto esta carregado

Recommended Posts

Acho que eu não expliquei direito, por exemplo,

 

quando você usa o comando load,

 

Load form1

 

você está carregando o form1 na memória e

 

Unload form1

 

está descarregando o form1 da memória, eu queria saber se é possível fazer algo para saber se o objeto está carregado na memória ou não.

 

Vlw http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

NÃO DEU PARA ENTENDER...

Mas pra verificar o que ele esta lendo aperte F8 q ele vai depurando o sistema...

Ou aperte F5 e qando quiser pause-o e aperte F8...

Vai apertando F8 pra ele ler linha por linha...

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou tentar ser mais explicito, eu tenho um array de forms

 

Dim Servidor(100) As Form

 

eis o código que eu uso para carregar o form

 

 

Set Servidor(i) = New frmChatCli

Load Servidor(i) 'aqui eu carrego o form na memória

Servidor(i).Show

 

 

na hora de fechar o form no evento Form_Unload eu uso

 

Unload me 'descarrego o frmChatCli da memória

 

pois bem, esse código é de um programa de chat baseado no MSN que eu estou desenvolvendo, na hora em que o usuário clicar na lista de contatos abrirá uma janela de conversa, até aí tudo bem, o problema é, se ele voltar a lista de contatos e clicar no mesmo contato abrirá uma nova janela de conversa, ficando simultaneamente duas janelas de conversa com o mesmo contato. Para evitar isso eu precisaria saber se o form de conversa com aquele contato já está carregado, se estiver eu só mostrarei o form que já está aberto, senão eu abrirei o form normalmente.

 

Qualquer dúvida sobre o que eu escrevi pode escrever que eu respondo http://forum.imasters.com.br/public/style_emoticons/default/natal_wink.gif

 

Desculpe a encheção de saco

 

Abraço http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que eu não expliquei direito, por exemplo,

 

quando você usa o comando load,

 

Load form1

 

você está carregando o form1 na memória e

 

Unload form1

 

está descarregando o form1 da memória, eu queria saber se é possível fazer algo para saber se o objeto está carregado na memória ou não.

 

Vlw http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif

 

Caramba Ulukai, eu até consegui achar um jeito, verificando através do estado da janela (windowsstate), mas não está dando certo, porque por mais que o form esteja fechado, a hora que verifica ele abre, deixa eu por o código para você entender:

 

If Form1.WindowState = 2 Then

MsgBox "Form Aberto"

Else

MsgBox "Form Fechado"

End If

 

Isso ai acima testa para ver o Form, sendo 2 o estado que se encontra quando aberto. E por mais que ele esteja fechado, quando passa na linha em que cita o nome do form, ele já abre, ou seja, sempre estará aberto e sempre será 2.

 

Vou tentar dar mais uma fuçada aqui para ver se consigo algo, enquanto isso, boa sorte.

 

Abraços...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Grande Claudio Neto,

 

essa é exatamente a minha dificuldade, se eu fizer teste com alguma propriedade do form que está fechado, ele abre, e no caso do meu programa de chat vai abrir todas as janelas de conversa que já foram fechadas. http://forum.imasters.com.br/public/style_emoticons/default/natal_ohmy.gif

 

abração

 

Ulukai

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu também to na mesma situação, precisando disso ai.

 

Eu usei a situação

 

 

if Form1.visible = true then

ABERTO

else

FECHADO

end if

 

 

Mas eu deixo invisivel algumas vezes o form, pois ele retorna da mesma maneira que foi ocultado.

Então eu preciso saber mesmo se o Form está realmente ABERTO ou Não.

 

Se alguém puder me ajudar.

 

Valeu.!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vocês sabem os possiveis nomes da janela certo? (P.E.: 'Conversa - Dr. X')

 

Sabendo o nome da janela fica facil, existe uma API FindWindow que retorna se a janela existe ou não

 

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

winH = FindWindow(vbNullString, Text1.Text) Substitua o objeto Text pelo nome da janela

	If winH = 0 Then
		MsgBox "Janela não encontrada!", vbCritical, "PostMessage"
	Else
			MsgBox "Janela encontrada", vbCritical, "PostMessage"
	End If

flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então amigo, eu não consegui fazer funcionar.

 

Você poderia me exemplificar melhor.

 

Eu tenho dois forms, 1 camado Form1 e o outro chamado Form2, quando eu clico em um botão do Form2, ele verifica se o Form1 está aberto.

 

Poderia colocar essa function em prática?

 

Obrigado.! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

A, deixa eu explicar a função :P, se não você nao vai entender.

Essa API FindWindow procura pelo titulo da janela, exempli, se no seu programa você tem a tela com o título 'Cadastro', você coloca 'Cadastro no lugar do Text1.Text

Seguinte:

 

Vai em um módulo:

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Depois no evento que você quiser

winH = FindWindow(vbNullString, Text1.Text) Substitua o objeto Text pelo nome da janela

	If winH = 0 Then
		MsgBox "Janela não encontrada!", vbCritical, "PostMessage"
	Else
			MsgBox "Janela encontrada", vbCritical, "PostMessage"
	End If

Entendeu agora?

Qualquer coisa grita.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caraca Scorpio, agora entendi até demais. :D

 

Nossa, vou fazer uns testes hoje a tarde, pois tenho que sair agora, mas tenho certeza que suprirá minhas necessidades isso ai. :)

Fico muito grato por sua atenção.

 

Obrigado amigo, t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.