COMO CHAMAR UMA ROTINA QUE ESTA DENTRO DA CLASS

MATHEUSNERIS 26/10/2012 10:32:40
#412862
Bom dia pessoal,

Estou migrando tudo que fiz dentro de um módulo para dentro de classes. Gostaria de saber qual a diferença entre um módulo e uma class, e gostaria também de saber como chamar um rotina que esta dentro da classe para dentro do meu formulário. Só para exemplificar melhor, estou fazendo da seguinte forma:

Private Sub Limpar_Click()
Dim ChamaClasseBandeira As clsBandeira

Call Limpar
End Sub
KERPLUNK 26/10/2012 10:44:02
#412867
Aqui você instanciou a classe:
Dim ChamaClasseBandeira As clsBandeira

Agora para chamar qualquer coisa que esteja dentro dessa classe:
ChamaClasseBandeira.NomeDoMetodo(paramentros...)

MATHEUSNERIS 26/10/2012 10:53:31
#412868
Desculpa KERPLUNK deixa eu ver se entendi,

[ô]Nesta linha eu atribui a uma variável o caminho para minha clsBandeira certo?
Dim ChamaClasseBandeira As clsBandeira

Depois de atribuir isto eu não poderia dar um comando [Ô]Call[Ô] para chamar a rotina de dentro da minha classe?
Novamente peço desculpas pela minha ignorância mais como assim parâmetros?
LUIZCOMINO 26/10/2012 11:05:35
#412869
ChamaClasseBandeira.Limpar
MARCELO.TREZE 26/10/2012 11:12:33
#412870
Resposta escolhida
Matheus é assim:

se você criar uma função dentro de um módulo você poderá chamar esta função usando o call, mas um class module (classe) é como uma dll, ou seja você deverá proceder como se procedesse usando uma dll, então a função passa a ser um metodo, ou seja:

se aqui você declarou

Dim ChamaClasseBandeira As clsBandeira


então a função dentro desta classe passa ser o=um método, ou propriedade tendo que ser usada da forma descrita abaixo

ChamaClasseBandeira.A_funcao_dentro_da_classe




MATHEUSNERIS 26/10/2012 11:25:46
#412872
Amigos muito obrigado, agora entendi a forma correta, porém esta dando erro.
Estou fazendo da seguinte forma.
Aqui esta dentro do formulário
Private Sub Limpar_Click()
[ô]txtCodigo = Empty
[ô]txtNome = Empty
[ô]LblUsuario_Inclusao = Empty
[ô]LblData_Inclusao = Empty
[ô]LblData_Alteracao = Empty
[ô]LblUsuario_Alteracao = Empty
[ô]LblFinal_Operacao = Empty
[ô]LblUsuario_Final = Empty
Dim ChamaClasseBandeira As clsBandeira
ChamaClasseBandeira.Limpar
End Sub

Aqui esta dentro da classe

Public Sub Limpar()
txtCodigo = Empty
txtNome = Empty
LblUsuario_Inclusao = Empty
LblData_Inclusao = Empty
LblData_Alteracao = Empty
LblUsuario_Alteracao = Empty
LblFinal_Operacao = Empty
LblUsuario_Final = Empty
End Sub


Ele me da o seguinte erro.
[Ô]Run-time error [ô]91[ô]:
Object variable or With block variable not set.
MARCELO.TREZE 26/10/2012 12:11:26
#412880
Tenta assim

Dim ChamaClasseBandeira As clsBandeira
Set ChamaClasseBandeira = New clsBandeira

ChamaClasseBandeira.Limpar

MATHEUSNERIS 26/10/2012 12:45:54
#412887
Agora não deu erro, porém o botão não faz nada.
MARCELO.TREZE 26/10/2012 12:57:01
#412888
Outra Maneira

Dim ChamaClasseBandeira As New clsBandeira
ChamaClasseBandeira.Limpar
MARCELO.TREZE 26/10/2012 13:05:04
#412889
esqueci de um detalhe não sei porque você está tentando limpar campos de dentro de uma classe pois isso é desnecessário, uma vez que:

Public Sub Limpar()
txtCodigo = Empty
txtNome = Empty
LblUsuario_Inclusao = Empty
LblData_Inclusao = Empty
LblData_Alteracao = Empty
LblUsuario_Alteracao = Empty
LblFinal_Operacao = Empty
LblUsuario_Final = Empty
End Sub


dentro do form vai funcionar mais fácil, ou seja só isso

Limpar

pronto

na classe não vai funcionar porque?

porque deveria estar assim

Public Sub Limpar()
Form1.txtCodigo.Text = Empty
Form1.txtNome.Text = Empty
Form1.LblUsuario_Inclusao.Caption = Empty
Form1.LblData_Inclusao.Caption = Empty
Form1.LblData_Alteracao.Caption = Empty
Form1.LblUsuario_Alteracao.Caption = Empty
Form1.LblFinal_Operacao.Caption = Empty
Form1.LblUsuario_Fina.Captionl = Empty
End Sub

MATHEUSNERIS 26/10/2012 14:33:01
#412902
é isso mesmo MARCELO-TREZE agora funcionou.

Muito obrigado de novo pela ajuda, vou encerrar o tópico.
Tópico encerrado , respostas não são mais permitidas