DLL

COSTELINHA 08/09/2006 16:29:48
#170268
Boa tarde, gostaria de saber como poderia criar uma dll com esse código.

Public Sub verifica_branco(janela As Form)
Dim campo As Control

For Each campo In janela.Controls
If TypeOf campo Is TextBox Or TypeOf campo Is ComboBox Then
If campo.BackColor = &HF5EFCD And campo.Text = "" Then
MsgBox "Existem campos obrigatórios que necessitam de preenchimento!!", vbInformation, "AVISO"
branco = True
Exit Sub
End If
End If
Next campo
branco = False
End Sub


Valeu
USUARIO.EXCLUIDOS 08/09/2006 16:38:37
#170271
vc tem que colocar o código em uma classe e compila-la como dll.

não é nada complicado.

tenta ai, se vc nao conseguir da um toque que monto um exemplo pra vc!

flws!
COSTELINHA 08/09/2006 16:41:56
#170272
Marcelo, eu coloco o código e ele nao aceita o (janela as form)

pq

valeu
USUARIO.EXCLUIDOS 08/09/2006 16:49:50
#170273
testei aqui e realmente ocorre um erro.


Pelo que entendi da mensagem, ele informa que "Objetos privados não podem fazer parte de modulos publicos"... e por ai vai e talz..

Na verdade ele só explica que não é possível passar um formulário (objeto privado) para uma rotina publica em uma classe.

Essa me pegou, não sei se teria como colocar essa sub em uma dll não viu...

a não ser que algm ai do forum tenha alguma outra informação que eu desconheça
USUARIO.EXCLUIDOS 08/09/2006 16:50:55
#170274
1. Crie um novo projeto
2. Escolha ActiveX DLL
3. Renomeia a Classe Class1 e escolha o nome da sua classe.
4. Adicione o seu código na classe
5. Compile a sua DLL

No seu projeto, Adiciona uma referência à  sua DLL, e declare uma variável para receber sua classe e depois é só utilizar seus procedimentos.

Importante... O Ideal é que você mude a sua Sub para uma Function com retorno Boolean... olha só:


1. Código na Classe da DLL
Public Function verifica_branco(janela As Object) As Boolean
Dim campo As Control

For Each campo In janela.Controls
If TypeOf campo Is TextBox Or TypeOf campo Is ComboBox Then
If campo.BackColor = &HF5EFCD And campo.Text = "" Then
MsgBox "Existem campos obrigatórios que necessitam de preenchimento!!", vbInformation, "AVISO"
verifica_branco = True
Exit Function
End If
End If
Next campo
verifica_branco = False

End Function


2. Código em qualquer form de um Projeto que utiliza a DLL
Dim varClasse as New Class1 'Ou o nome que você definir

If varClasse.verifica_branco(Me) Then
MsgBox "Verificação ok, prosseguir"
Else
MsgBox "Corrigir erros e repetir"
End If


Você pode notar que fiz algumas correções no seu código :
- Mudei a declaração de sua rotina de Sub para Function, com retorno Booleano
- Mudei a declaração do parà¢metro da rotina para janela As Object ao invés de janela As Form. Em um projeto de DLL ActiveX, você não pode passar um form como parà¢metro para uma Classe.
- Mudei a variável branco = True e branco = false para verifica_branco = True e verifica_branco = false para ajustar qual o retorno da função.


Você pode criar um projeto DLL e depois adicionar um projeto normal para fazer testes, sem precisar compilar a DLL, basta que no seu projeto de teste vc adicione uma referência ao projeto da DLL e clique com o botão direito nele e selecione Set as Startup
CAIO.IN.DUST 08/09/2006 17:04:51
#170280
Resposta escolhida
Esta ai o exemplo, utilizando o seu codigo
USUARIO.EXCLUIDOS 08/09/2006 17:05:41
#170282
Citação:

quando eu chamasse de um formulario essa dll, eu teria que passar o parametro da variavel janela

que seria um form.

valeu



Tranquilo... é só mudando para as Object, vai funfar blz...
Tópico encerrado , respostas não são mais permitidas