USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Classes que não precisam de New p/ ser instanciada
Vilmar Brazão
Pontos: 2843
SAO PAULO
SP - BRASIL
Postada em 28/03/2007 20:07 hs         
Por que tem classes que não precisam de new p/ serem instanciadas ?
Seriam classes que contém apenas propriedades ?
Ou classes que não têm codificação em Class_Initialize ?
Ou .....??

http://www.vilmarbro.com.br
     
kerplunk
Pontos: 2843 Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
Postada em 29/03/2007 10:32 hs         
A palavra chave New não é obrigatório na declaração de nenhuma classe
     
Vilmar Brazão
Pontos: 2843
SAO PAULO
SP - BRASIL
Postada em 29/03/2007 13:33 hs         
As classes que tem métodos e até uma classe só com propriedades (eu fiz um teste) dão este erro, se não tiverem sidos instanciadas:
err.Number:  91
err.Description: Object variable or With block variable not set
 
Eu tb. fiz o teste colocando esta classe só com propriedades dentro de uma DLL com instância = 5 - MultiUse , mas mesmo assim, sem instanciar, deu o mesmo erro 91.
 
form:
Private Sub Form_Load()
    Dim objCliente As clsTesteGeral
'    Set objCliente = New clsTesteGeral
   
    objCliente.Codigo = 45
    objCliente.Nome = "vilmar"
    MsgBox objCliente.Codigo & " | " & objCliente.Nome
End Sub
 
classe:
Private m_lngCodigo As Long
Private m_strNome As String
Public Property Get Codigo() As Long
    Codigo = m_lngCodigo
End Property
Public Property Let Codigo(ByVal lngCodigo As Long)
    m_lngCodigo = lngCodigo
End Property
Public Property Get Nome() As String
    Nome = m_strNome
End Property
Public Property Let Nome(ByVal strNome As String)
    m_strNome = strNome
End Property
 
----------
 
O que eu não estou entendendo, é pq. tem umas classes nos projetos que eu faço manutenção no meu serviço, as quais não são instanciadas, não dão o erro  91 !!!!! ???

http://www.vilmarbro.com.br
     
Vilmar Brazão
Pontos: 2843
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 29/03/2007 15:40 hs         
Bem, pessoal, já descobri, onde estava sendo instanciada a minha classe: numa coleção de classes.
Classe clsProfile - unitária
Classe clsProfiles - coleção da classe clsProfile
 
Veja nesta parte de código abaixo:
    Dim cprofile As clsProfile
       
    ' Cria tópico principal da lista
    Set cBar = frmFormulario.lstPerfis.Bars.Add("PERFIL", , "Perfis disponíveis")
   
    For lngI = 1 To lSize
       cBar.Items.Add "ITEM" & lngI & ":" & cBar.Index, , "Item " & lngI, lngI - 1
    Next lngI
   
    ' Cria subtópicos da lista
'TODA VEZ QUE PASSAR POR ESTE FOR EACH ABAIXO, É SETADO UMA NOVA INSTÂNCIA DA CLASSE clsProfile:
'Public Property Get Profiles() As IColecao
'    Set Profiles = m_objProfiles
'End Property
    For Each cprofile In m_Doc.Profiles
        Set cItem = frmFormulario.lstPerfis.Bars("PERFIL").Items.Add(cprofile.Name, , CStr(cprofile.Name))
       
        If UCase(CStr(m_Doc.ProfileSelecionado)) = UCase(CStr(cprofile.Name)) Then
            cItem.Selected = True
        End If
    Next
----
Vlw ;)

http://www.vilmarbro.com.br
   
Página(s): 1/1    

CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página