Lunes 23 de Diciembre de 2024, 07:32
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Ayuda Con Funcion
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Ayuda Con Funcion (Leído 2544 veces)
m@gnus
Miembro activo
Mensajes: 25
Ayuda Con Funcion
«
en:
Lunes 15 de Mayo de 2006, 16:39 »
0
Primero que nada saludos para este gran foro, mi problema es con la siguiente funcion, esta me sirve para cambiar el color de textbox a amarillo cuando este se encuentre activo. o en teoria hace eso, el problema es que en la linea marcada con asteriscos me marca un error y no se que hacer, agradeceria su ayuda de antemano...
El error k se muestra es el siguiente:
Código: Text
Run-Time error '438': El objeto no soporta la propiedad o metodo.
Codigo de la funcion
Código: Text
Function ChangeColor()
Dim ctl As Control
For Each ctl In Me
*** If ctl.ControlType = acTextBox Then
ctl.BackColor = vbWhite
End If
Next ctl
Me.ActiveControl.BackColor = vbYellow
End Function
Tweet
cpmario
Miembro HIPER activo
Mensajes: 629
Re: Ayuda Con Funcion
«
Respuesta #1 en:
Lunes 15 de Mayo de 2006, 17:12 »
0
Un mejor método es colocar el cambio de color en los eventos GotFocus y LostFocus, por ejemplo:
Código: Text
Private Sub Text1_GotFocus()
Text1.BackColor = &HC0FFFF
End Sub
Private Sub Text1_LostFocus()
Text1.BackColor = &H80000005
End Sub
m@gnus
Miembro activo
Mensajes: 25
Re: Ayuda Con Funcion
«
Respuesta #2 en:
Lunes 15 de Mayo de 2006, 18:25 »
0
Estoy de acuerdo, pero en este caso esta funcion le cambia el color a 15 texbox en una forma, y para eso es la funcion, te imagunas poner todo eso a cada texbox ???????
Solo es la forma mas optima.....
DiabloRojo
Miembro MUY activo
Mensajes: 220
Re: Ayuda Con Funcion
«
Respuesta #3 en:
Lunes 15 de Mayo de 2006, 18:52 »
0
Hola m@gnus.
Revisa en la ayuda del VB la función TypeOf que sirve para averiguar qué tipo de control es un control específico que se pasa como parámetro. Ciertamente ningún control cuenta con la propiedad "ControlType".
Disculpa que no coloque un ejemplo pero la verdad en este momento no recuerdo cómo se usa la función ni tengo el VB para probar.
Saludos y suerte
DiabloRojo
Widark
Miembro MUY activo
Mensajes: 246
Re: Ayuda Con Funcion
«
Respuesta #4 en:
Lunes 15 de Mayo de 2006, 23:50 »
0
Que tal M@gnus!
Como lo comenta DiabloRojo, la función TypeOf te servira en este caso. Te recomendaria que validaras los controles en el For, así
Código: Text
For Each ctl In Me.Controls
No se como llamas a la función pero deberias validar que el control activo no sea uno diferente de un textbox.
Espero ayude de algo.
[:], Yo si se lo que es trabajar duro, por que lo he visto.
http]
programacion
,
c
,
c++
,
C#
,
java
,
linux
,
videojuegos
,
directX
,
.NET
,
allegro
,
asm
,
codigo
NoSolocodigo
--> Blog de Articulos
cpmario
Miembro HIPER activo
Mensajes: 629
Re: Ayuda Con Funcion
«
Respuesta #5 en:
Martes 16 de Mayo de 2006, 00:00 »
0
Tienes un problema...
La rutina que mostraste:
Código: Text
Function ChangeColor()
Dim ctl As Control
For Each ctl In Me
If ctl.ControlType = acTextBox Then
ctl.BackColor = vbWhite
End If
Next ctl
Me.ActiveControl.BackColor = vbYellow
End Function
Es correcta en principio, solo que el problema es de donde la vas a llamar, por ejemplo si la llamas desde un control que no sea de texto, ese control tomará el foco y será el activo de esa forma y te marcará el error "Run-Time error '438': El objeto no soporta la propiedad o metodo."
Así que mi sugerencia sigue en pie, aunque tengas que colocar el código en los 15 cuadros de texto.
Soultaker
Miembro HIPER activo
Mensajes: 972
Nacionalidad:
Re: Ayuda Con Funcion
«
Respuesta #6 en:
Martes 16 de Mayo de 2006, 04:55 »
0
Prueba con esto
Código: Text
Function ChangeColor()
Dim ctl As Control
For Each ctl In Me.Controls
If TypeOf ctl Is TextBox Then
ctl.BackColor = vbWhite
End If
Next ctl
Me.ActiveControl.BackColor = vbYellow
End Function
http]
foros,
programacion,
c
,
c++
,
java
,
linux
,
videojuegos
,
directX
,
.NET
,
visual basic
,
robotica
,
microprocesadores
Para los nuevos usuarios de este Foro, por favor leerse esta discusión.
Cómo Hacer Preguntas De Forma Inteligente
Ojos que no ven... pisan caquita
Camarón que se duerme... muere electrocutado
<<< Harol Moreyra Bendezú >>>
m@gnus
Miembro activo
Mensajes: 25
Re: Ayuda Con Funcion
«
Respuesta #7 en:
Martes 16 de Mayo de 2006, 05:39 »
0
Thanks Soultaker una excelente solucion con el typeof............
!!!!!!!Saludos
DiabloRojo
Miembro MUY activo
Mensajes: 220
Re: Ayuda Con Funcion
«
Respuesta #8 en:
Martes 16 de Mayo de 2006, 15:44 »
0
Bueno, por algo dicen que todos los caminos conducen a Roma. Aquí otra solución pero usando un timer (creo, a la vista del código enviado por Soultaker, me compliqué la vida
). Lo dicho, usé un timer con la propiedad interval en 100 y usé este código:
Código: Text
Private Sub Timer1_Timer()
Dim ctrl As Control
If TypeOf Form1.ActiveControl Is TextBox Then
For Each ctrl In Form1.Controls
If TypeOf ctrl Is TextBox Then
If Form1.ActiveControl.Name = ctrl.Name Then
ctrl.BackColor = vbBlue
Else
ctrl.BackColor = vbWhite
End If
End If
Next
Else
For Each ctrl In Form1.Controls
If TypeOf ctrl Is TextBox Then
ctrl.BackColor = vbWhite
End If
Next
End If
End Sub
Es que no me podía quedar sin mandarlo
Jejejeje...
Saludos
DiabloRojo
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Ayuda Con Funcion