Combobox con flash

21/09/2007 - 11:36 por BADDOG | Informe spam
Hola a todos:
Como no soy muy bueno os explico mi "problema".

Estoy entrando datos a partir de que el combobox se cambia. una vez que el
evento change del combobox2 se ejecuta se hace visible el 3 para poder
editarlo y así posteriormente, por lo que el formulario se va haciendo
visible a partir de que se introducen datos.

El fallo es que quiero que si el dato que hay en 2 es igual al del 3 (podría
hacer que esos datos se filtrasen y si el dos tiene por ejemplo casa, en el 3
el dato casa no apareciese, pero ese es otro caso), me haga un tipo FLASH,
(que tiempos aquellos del BASIC), pero al ejecutar un bucle a
combobox.forecolor, no me hace nada, solo se queda esperando.

no soy muy bueno por lo que espero sepais perdonar mi poca experiencia:
For B = 1 To 255
For A = 255 To 0 Step -1
ComboBox2.ForeColor = RGB(255 - A, 255 - A, 255 - A)
ComboBox3.ForeColor = RGB(255 - A, 255 - A, 255 - A)

For j = 1 To 1000
Next j
ComboBox2.BackColor = RGB(A, A, A)
ComboBox3.BackColor = RGB(A, A, A)
For j = 1 To 1000 ' para hacer menos rápido el parpadeo
Next j
ComboBox2.ForeColor = RGB(0, 0, 0)' datos originales combobox
ComboBox3.ForeColor = RGB(0, 0, 0)
For j = 1 To 1000
Next j
ComboBox2.BackColor = RGB(255, 255, 255)' datos originales combobox
ComboBox3.BackColor = RGB(255, 255, 255)
Next A
Next B

Esto es una especie de aquella instrucción del basic print flash1 "Hola" en
la que en pantalla quedaba el texto realizando flash todo el rato.

Gracias de antemano. Juan Carlos
 

Leer las respuestas

#1 Héctor Miguel
22/09/2007 - 05:05 | Informe spam
hola, Juan Carlos !

Estoy entrando datos a partir de que el combobox se cambia. una vez que el evento change del combobox2 se ejecuta
se hace visible el 3 para poder editarlo y asi posteriormente, por lo que el formulario se va haciendo visible a partir de que se introducen datos.
El fallo es que quiero que si el dato que hay en 2 es igual al del 3 (podria hacer que esos datos se filtrasen y si el dos tiene por ejemplo casa
en el 3 el dato casa no apareciese, pero ese es otro caso), me haga un tipo FLASH, (que tiempos aquellos del BASIC)
pero al ejecutar un bucle a combobox.forecolor, no me hace nada, solo se queda esperando...



no estoy muy seguro de que los tiempos *aquellos* del Basic/QBasic sean tan... *de anhelar* -?-
[es como si teniendo un tractor de ultima tecnologia, quisieras volver a labrar la tierra con una yunta] :))

[bromas aparte]... no comentas si tus combos estan incrustados en alguna hoja o estas usando algun formulario -?-
[probablemente]... los cambios en la *tonalidad* del color de fuente son tan... *tenues*, que no son *apreciables* a simple vista -?-
o... que necesites alguna instruccion del tipo DoEvents o Repaint [si estamos hablando de algun formulario] -?-

[personalmente, y asumiendo que es de vital importancia hacer que los controles *flasheen*]... te sugeriria:
a) NO usar cambios de tonalidad tan... *poco notorios*, quizas solo alternar entre dos colores [rojo/amarillo] entre fondo/fuente -?-
b) probar otros metodos en lugar de bucles tan *costosos* como For X = 1 To 255 [aunque en realidad todo tiene *algun costo*] :-((

[p.e.] si suponemos que tus combos estan en algun formulario de usuario
y que solo pretendes *flashear* al usuario cuando la seleccion del combo3 coincida con la del combo2
[OJO: si cambias el combo2 y ya no coincide con el combo3, el evento 'change' del combo3 seguira *creyendo* en la coincidencia]
[y de pasadita, usas la *escala* de colores del QBasic] :D

pon las siguientes instrucciones en el modulo de codigo del formulario [afectando cambios en el combo3]

Private Sub ComboBox3_Change()
If ComboBox3 <> ComboBox2 Then GoTo Salida
Dim Inicio As Single: Inicio = Timer
Do: DoEvents
Select Case (Timer - Inicio) Mod 2
Case 0
ComboBox3.BackColor = QBColor(4)
ComboBox3.ForeColor = QBColor(14)
Case Else
ComboBox3.BackColor = QBColor(14)
ComboBox3.ForeColor = QBColor(4)
End Select
Loop While ComboBox3 = ComboBox2
Salida:
ComboBox3.BackColor = QBColor(15)
ComboBox3.ForeColor = QBColor(0)
End Sub

existen otros *costos*, como que el procedimiento anterior hace dificil *recuperar el control* del control :-((
hay mas imponderables, pero... si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ [fraccion de] codigo expuesto __
For B = 1 To 255
For A = 255 To 0 Step -1
ComboBox2.ForeColor = RGB(255 - A, 255 - A, 255 - A)
ComboBox3.ForeColor = RGB(255 - A, 255 - A, 255 - A)
For j = 1 To 1000
Next j
ComboBox2.BackColor = RGB(A, A, A)
ComboBox3.BackColor = RGB(A, A, A)
For j = 1 To 1000 ' para hacer menos rapido el parpadeo
Next j
ComboBox2.ForeColor = RGB(0, 0, 0)' datos originales combobox
ComboBox3.ForeColor = RGB(0, 0, 0)
For j = 1 To 1000
Next j
ComboBox2.BackColor = RGB(255, 255, 255)' datos originales combobox
ComboBox3.BackColor = RGB(255, 255, 255)
Next A
Next B
Esto es una especie de aquella instruccion del basic print flash1 "Hola"
en la que en pantalla quedaba el texto realizando flash todo el rato.

Gracias de antemano. Juan Carlos

Preguntas similares