Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Mensaje iniciado por: Eleкtro en 24 Marzo 2013, 00:55 AM

Título: [SOLUCIONADO] Un ToolTip me está dando por...
Publicado por: Eleкtro en 24 Marzo 2013, 00:55 AM
Perdón, quería postear en .NET y me equivoqué, ¿Me lo mueven ?, sorry >:D






Bueno pues en este sub manejo un numericupdown y un combobox

Lo que intento es, que al escribir un número mayor de "X" en el numericupdown, mostrar una pequeña alerta para indicar que no se puede aumentar el valor.

El problema es que, después de alertar una primera vez, el tooltip sigue mostrando las alertas aunque la condición no se cumpla:

(http://img46.imageshack.us/img46/1817/prtscrcapturer.jpg)

El code:
Código (vbnet) [Seleccionar]
   ' NumericUpDown Time / ComboBox Time Measure
   Private Sub ComboBox_Measure_SelectedIndexChanged(sender As Object, e As EventArgs) Handles _
       ComboBox_Measure.SelectedIndexChanged, _
       NumericUpDown_Time.ValueChanged

       Select Case ComboBox_Measure.SelectedIndex
           Case 0
               ' Seconds
               Time_Out = (Convert_Time(NumericUpDown_Time.Value, S, MS))
               Time_Measure = S
           Case 1
               ' Minutes
               If NumericUpDown_Time.Value >= 35793 Then NumericUpDown_Time.Value = 35792 : GoTo ToolTip
               Time_Out = (Convert_Time(NumericUpDown_Time.Value, M, MS))
               Time_Measure = M
           Case 2
               ' Hours
               If NumericUpDown_Time.Value >= 597 Then NumericUpDown_Time.Value = 596 : GoTo ToolTip
               Time_Out = (Convert_Time(NumericUpDown_Time.Value, H, MS))
               Time_Measure = H
           Case 3
               ' Days
               If NumericUpDown_Time.Value >= 25 Then NumericUpDown_Time.Value = 24 : GoTo ToolTip
               Time_Out = (Convert_Time(NumericUpDown_Time.Value, H, MS)) * 24
               Time_Measure = H
           Case 4
               ' Weeks
               If NumericUpDown_Time.Value >= 4 Then NumericUpDown_Time.Value = 3 : GoTo ToolTip
               Time_Out = (Convert_Time(NumericUpDown_Time.Value, H, MS)) * 168
               Time_Measure = H
       End Select

       Exit Sub

ToolTip:
       'ToolTip1.Active = True
       'ToolTip1.SetToolTip(Me.NumericUpDown_Time, "Max value")
       ToolTip1.Show("Max value", Me.NumericUpDown_Time, 1500)
       'ToolTip1.Hide(Me.NumericUpDown_Time)
       'ToolTip1.Active = False

   End Sub
Título: Re: Un ToolTip me está dando por...
Publicado por: $Edu$ en 24 Marzo 2013, 01:18 AM
Mmm esos Goto no quedan muy bonito.

Pone  ToolTip1.Hide(Me.NumericUpDown_Time) antes del Select case.

Si antes estaba oculto, seguira oculto, si antes tenia un mensaje, se ocultara y luego en los ifs vera si se muestra de nuevo o no, pero esa decision la hace mas rapido que lo que pestañamos por lo que es lo mismo xD
Título: Re: Un ToolTip me está dando por...
Publicado por: Eleкtro en 24 Marzo 2013, 14:55 PM
Cita de: $Edu$ en 24 Marzo 2013, 01:18 AM
Pone  ToolTip1.Hide(Me.NumericUpDown_Time) antes del Select case.

nada, no me sirvió xD
Título: Re: Un ToolTip me está dando por...
Publicado por: Pablo Videla en 24 Marzo 2013, 15:09 PM
Hola!

Bueno no estoy muy seguro, porque no conozco este lenguaje como corresponde (Como ya te lo he dicho en otras ocasiones) Pero me di cuenta en que en todos los case, vas a Tooltip si o si, y si no me equivoco ese tooltip lanza la alerta? Porque cada vez que vayas a tooltip la alerta se mostrara sin ninguna condicion porque le estas diciendo que vayas ahi en el case.

Bueno es lo que entendi, pero puedo estar equivocado  :xD

Saludos
Título: Re: Un ToolTip me está dando por...
Publicado por: Eleкtro en 24 Marzo 2013, 15:52 PM
No te preocupes DonVidela, cualquier comentario es bien recibido.

Pero no es como comentas, sólo llamo al tooltip cuando se cumple la condición, y antes de la etiqueta del ToolTip está la instrucción "Exit Sub" precísamente para que no suceda lo que comentas.

En resumen ese tooltip no se muestra siempre, se muestra cuando una de las condiciones se cumple (Lo he comprobado, hasta aquí todo bien), el problema es que después de mostrarse por primera vez, se sigue mostrando SIEMPRE aunque no se den las condiciones, ya puedo tratar de ocultarlo o desactivarlo o "disposarlo", pero no conseguiré nada porque se sigue mostrando cuando coloco el puntero del mouse encima del numericupdown, dándome por cu... xD

>:(

Un saludo!
Título: Re: Un ToolTip me está dando por...
Publicado por: $Edu$ en 24 Marzo 2013, 16:04 PM
Yo sigo creyendo que tengo razon xD
Debes tener algun error que no nos estas contando, cuando dices "cuando coloco el puntero del mouse encima del numericupdown" no es otro evento ese? no tendras algo ahi? :S
Título: Re: Un ToolTip me está dando por...
Publicado por: Eleкtro en 24 Marzo 2013, 16:09 PM
@$Edu$

Si pregunto es porque no puedo encontrar el fallo o el error así que no puedo estar 100% seguro, pero por otro lado te aseguro que no tengo ningún evento asociado al ToolTip u otros eventos a esos controles ni nada extraño,
el único trozo de código donde uso el Tooltip es el que he mostrado, una sola línea xD.

Si el ToolTip sale cuando paso el mouse por el control, es porque lo especifico como parámetro aquí:
Código (vbnet) [Seleccionar]
ToolTip1.Show("Max value", Me.NumericUpDown_Time, 1500)

EDITO: El ToolTip lo agrego desde el designer, y los atributos del ToolTip son los que se usan por defecto (Aunque he probado a modificarlos..).

:(
Título: Re: Un ToolTip me está dando por...
Publicado por: $Edu$ en 24 Marzo 2013, 16:19 PM
Pero esa linea que pones, se tiene que generar en el evento que has dejado, y ese evento no es cuando pasas el mouse por arriba, es cuando haces click, o me equivoco? Con solo pasar el mouse no tendria que cambiar nada, no se ejecutaria nada.
Título: Re: Un ToolTip me está dando por...
Publicado por: Eleкtro en 24 Marzo 2013, 16:27 PM
Cita de: $Edu$ en 24 Marzo 2013, 16:19 PM
Pero esa linea que pones, se tiene que generar en el evento que has dejado, y ese evento no es cuando pasas el mouse por arriba, es cuando haces click, o me equivoco? Con solo pasar el mouse no tendria que cambiar nada, no se ejecutaria nada.

Ahí está el problema, yo provoco que aparezca el tooltip sobre el control cuando de alguna manera el número séa mayor de "X", ya séa haciendo click o escribiendo dentro, pero luego ya no debería mostrarse más...

De todas formas ya está, me sirvió la idea que tuviste Edu, usando otro método antes del Case:
ToolTip1.Show("", Me.NumericUpDown_Time, 0)
No sé si eso será muy correcto, pero desde luego ahora funciona como debe, no se sigue mostrando el tooltip.


Gracias

Slaudos.

RECTIFICO, SE SIGUE MOSTRANDO, YA NO SÉ QUE DEBO HACER.
Título: Re: [SOLUCIONADO] Un ToolTip me está dando por...
Publicado por: $Edu$ en 24 Marzo 2013, 16:47 PM
El metodo Hide pensaba que ocultaba pero solo oculta si se estaba mostrando pero despues vuelve a aparecer, por eso no andaba.

Cambia eso que has puesto por ToolTip1.Active = false, es decir antes del Select Case.

Y en la etiqueta ToolTip: tendras que descomentar lo de ToolTip1.Active = True para que se vuelva a activar.
Título: Re: Un ToolTip me está dando por...
Publicado por: Eleкtro en 24 Marzo 2013, 16:57 PM
De la manera que me indicas, inactivandolo antes del case y activandolo en la etiqueta se consigue una mejora pero sigue habiendo problemas, ahora el tooltip sólo se muestra cuando la considión se cumple y se sigue mostrando si no disminuyo el valor, es decir, si no clicko en la flecha "abajo" del numericupdown.


Al final he tenido que hacer un timer para solucionarlo del todo, aquí dejo la solución:

Código (vbnet) [Seleccionar]
   Private Sub ComboBox_Measure_SelectedIndexChanged(sender As Object, e As EventArgs) Handles _
       ComboBox_Measure.SelectedIndexChanged, _
       NumericUpDown_Time.ValueChanged

       Select Case ComboBox_Measure.SelectedIndex
           Case 0
               ' Seconds
               Time_Out = (Convert_Time(NumericUpDown_Time.Value, S, MS))
               Time_Measure = S
           Case 1
               ' Minutes
               If NumericUpDown_Time.Value >= 35793 Then NumericUpDown_Time.Value = 35792 : GoTo ToolTip
               Time_Out = (Convert_Time(NumericUpDown_Time.Value, M, MS))
               Time_Measure = M
           Case 2
               ' Hours
               If NumericUpDown_Time.Value >= 597 Then NumericUpDown_Time.Value = 596 : GoTo ToolTip
               Time_Out = (Convert_Time(NumericUpDown_Time.Value, H, MS))
               Time_Measure = H
           Case 3
               ' Days
               If NumericUpDown_Time.Value >= 25 Then NumericUpDown_Time.Value = 24 : GoTo ToolTip
               Time_Out = (Convert_Time(NumericUpDown_Time.Value, H, MS)) * 24
               Time_Measure = H
           Case 4
               ' Weeks
               If NumericUpDown_Time.Value >= 4 Then NumericUpDown_Time.Value = 3 : GoTo ToolTip
               Time_Out = (Convert_Time(NumericUpDown_Time.Value, H, MS)) * 168
               Time_Measure = H
       End Select

       Exit Sub

ToolTip:
       Dim ToolTips_Timer As New Timer
       ToolTips_Timer.Interval = 1500
       AddHandler ToolTips_Timer.Tick, AddressOf ToolTips_Timer_Tick
       ToolTip_Form.Show("Max value", Me.NumericUpDown_Time, ToolTips_Timer.Interval)
       ToolTips_Timer.Start()

   End Sub


Código (vbnet) [Seleccionar]
  Private Sub ToolTips_Timer_Tick(sender As Object, e As EventArgs)
       ToolTip_Form.RemoveAll()
       sender.stop()
   End Sub
Título: Re: [SOLUCIONADO] Un ToolTip me está dando por...
Publicado por: $Edu$ en 24 Marzo 2013, 18:19 PM
Que se te ha complicado xD Es que yo no usaria eso, por lo que veo en la imagen mas o menos entiendo que quieres hacer y no usaria ningun ToolTip, solo bloquearia para que no se pueda poner un valor maximo, es decir, lo mejor siempre es forzar el control en vez de andar permitiendolo y dejando mensajes.
Título: Re: [SOLUCIONADO] Un ToolTip me está dando por...
Publicado por: Eleкtro en 24 Marzo 2013, 18:23 PM
Pero soy muy detallista y además de denegar quise mostrar una advertencia en forma de Tooltip, sin advertencias más bien parecería un bug en vez de una limitación xD.

Salu2
Título: Re: [SOLUCIONADO] Un ToolTip me está dando por...
Publicado por: $Edu$ en 24 Marzo 2013, 18:27 PM
Bueno, o poner un label en vez de un tooltip, yo en la imagen que dejaste pensaba al principio que seria un label eso. Pero bueno, si ya quedo bien, todo perfect :P