PROBLEMAS COM CLICK EM EVENTO DE CONTROLE

LUIS.HERRERA 10/04/2007 11:30:56
#210966
Bom dia amigos.

Estou com um problema que não encontro solução.

Fiz um skin próprio, onde crio instâncias do objeto Image e posiciono conforme necessidade. Meu programa é MDI em VB6.

O problema é que os botões Fechar e Informação (localizados na barra de títulos estavam funcionando perfeitamente), porém incluí um novo form não MDI para exibir o Help do programa que é acionado por esse botão Informação. Ao clicar nele o form é exibido normalmente, mas ao fechar se clicar no botão Fechar da barra de Títulos (x do meu Skin) o VB dá erro e fecha o próprio VB. Já tentei de tudo e não identifico o problema.

Nota: O objeto image possui o evento Private WithEvents closNovo As Image declarado normalmente.

Nota: se incluir no clique desse botão uma chamada ao controle button que faz o mesmo fechar o form, também dá erro, mas se eu clico direto no botão fechar (button) não dá erro. Não entendo o que está ocorrendo, pois o problema é justamente no clique no (x).

Private Sub closNovo_Click()
Call cmdFechar_Click
End Sub


Já usei Unload Me no lugar do Call e não adiante. Já usei o form de Help como Modal sem ser modal e o erro continua.

Alguém tem alguma idéia?
LUIS.HERRERA 10/04/2007 13:12:38
#211004
A única coisa que consegui identificar até o momento é que se eu deixar a linha:

Private Sub Form_Unload(Cancel As Integer)
' frmAtestados é o nome deste form
Set frmAtestados = Nothing
End Sub


Ocorre o erro. Eu sempre usei isso nos meus projetos, e nunca tive problema já que é a única forma real de eliminar qualquer variável desse form da memória.

Acredito que por estar ativando uma sub pelo evento Click da imagem (botão x do meu skin), ele chama o unload do form que após terminar tudo limpa-o da memória, mas ainda não foi executada a instrução End Sub do evento desse (x) e acredito que seja esse o problema, ao voltar para a sub inicial e finalizar não está sendo possível.

Para resolver o problema eu retirei a instrução set frmAtestados = Nothing do unload, e funcionou agora. Mas isso não ficou legal, pois abri mão de limpar a memória 100%.
Tópico encerrado , respostas não são mais permitidas