METODO CHAGE EM TODOS OBJETOS DO FORM

USUARIO.EXCLUIDOS 14/07/2005 07:24:53
#94050
Olá,
Estou com a seguinte dúvida:
Tenho um form com vários objetos (textbox, combobox, etc) e gostaria que toda vez que fosse executado o método OnChange de qualquer objeto, acionasse uma determinada função.
Claro que poderia simplemente adicionar o método OnChage de cada um deles... Mas aí é que está o problema: o form possui muitos campos e provavelmente, eu terei que implementar isso não só em um form e sim na maioria deles (quase todo o sistema)...
Existe alguma maneira mais simples?
JEAN.JEDSON 14/07/2005 07:58:20
#94054
bem...
até onde sei... tem que ser um por um. mas chame uma função, para facilitar a manutenção, se todos são exatamente iguais.
USUARIO.EXCLUIDOS 14/07/2005 08:04:22
#94057
Desculpem lá.

Como utilizo o metodo OnChange() e para que serve ???

Tks.
PAGANINI 14/07/2005 09:09:41
#94071
é muito simples, mas deve ser feito para cada tipo de controle.
Passando o exemplo para o textbox. Será nescessario incluir um Timer com tempo de intervalo 1 até 1000

Option Explicit
Dim WithEvents TextBoxAtual As TextBox
Private Sub Timer1_Timer()
On Error Resume Next
If TypeName(ActiveControl) = "TextBox" Then
If TextBoxAtual.Name <> ActiveControl.Name Then
Set TextBoxAtual = ActiveControl
End If
End If
erro:
End Sub
Private Sub TextBoxAtual_Change()
Dim Mensagem As String
Mensagem = "O controle " & TextBoxAtual.Name & " foi alterado." & vbCrLf
Mensagem = Mensagem & "para o valor " & TextBoxAtual.Text
MsgBox Mensagem
End Sub
USUARIO.EXCLUIDOS 14/07/2005 18:11:36
#94178
Fiz de outra maneira. Mais ou menos da seguinte forma:

Private WithEvents moTextBox As TextBox

Public Sub AttachTo(ByVal objAux As Object)
If TypeOf objAux Is TextBox Then
Set moTextBox = objAux
End If
End Sub

Private Sub moTextBox_Change()
Call sGeraArrayObjs(moTextBox.Name)
End Sub

Onde "sGeraArrayObjs" gera uma lista com o nome dos objetos que foram alterados

Mas encontrei outro problema. Para objetos Combobox, CheckBox, OptionButtom funciona perfeitamente mas também tenho objetos do tipo Grid, Flexgrid, Spread...
Como poderia proceder?
Alguém tem alguma idéia?
USUARIO.EXCLUIDOS 14/07/2005 18:15:26
#94180
Obs: a sub "AttachTo", utilizo no load do Form para cada objeto do form, e dessa forma, como possuo mais de um textbox no mesmo form, o código acima funciona somente para o último textbox utilizado nessa função. E não queria chamar essa função no LostFocus de cada objeto.
Ou seja, teóricamente, teria que criar um Array de objetos, mas não estou sabendo como fazê-lo
Tópico encerrado , respostas não são mais permitidas