COMO CHAMAR UMA ROTINA QUE ESTA DENTRO DA CLASS
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
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
Aqui você instanciou a classe:
Dim ChamaClasseBandeira As clsBandeira
Agora para chamar qualquer coisa que esteja dentro dessa classe:
ChamaClasseBandeira.NomeDoMetodo(paramentros...)
Dim ChamaClasseBandeira As clsBandeira
Agora para chamar qualquer coisa que esteja dentro dessa classe:
ChamaClasseBandeira.NomeDoMetodo(paramentros...)
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?
[ô]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?
ChamaClasseBandeira.Limpar
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
então a função dentro desta classe passa ser o=um método, ou propriedade tendo que ser usada da forma descrita abaixo
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
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.
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.
Tenta assim
Dim ChamaClasseBandeira As clsBandeira
Set ChamaClasseBandeira = New clsBandeira
ChamaClasseBandeira.Limpar
Dim ChamaClasseBandeira As clsBandeira
Set ChamaClasseBandeira = New clsBandeira
ChamaClasseBandeira.Limpar
Agora não deu erro, porém o botão não faz nada.
Outra Maneira
Dim ChamaClasseBandeira As New clsBandeira
ChamaClasseBandeira.Limpar
Dim ChamaClasseBandeira As New clsBandeira
ChamaClasseBandeira.Limpar
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:
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()
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
é isso mesmo MARCELO-TREZE agora funcionou.
Muito obrigado de novo pela ajuda, vou encerrar o tópico.
Muito obrigado de novo pela ajuda, vou encerrar o tópico.
Tópico encerrado , respostas não são mais permitidas