Foro de elhacker.net

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
  1.    ' NumericUpDown Time / ComboBox Time Measure
  2.    Private Sub ComboBox_Measure_SelectedIndexChanged(sender As Object, e As EventArgs) Handles _
  3.        ComboBox_Measure.SelectedIndexChanged, _
  4.        NumericUpDown_Time.ValueChanged
  5.  
  6.        Select Case ComboBox_Measure.SelectedIndex
  7.            Case 0
  8.                ' Seconds
  9.                Time_Out = (Convert_Time(NumericUpDown_Time.Value, S, MS))
  10.                Time_Measure = S
  11.            Case 1
  12.                ' Minutes
  13.                If NumericUpDown_Time.Value >= 35793 Then NumericUpDown_Time.Value = 35792 : GoTo ToolTip
  14.                Time_Out = (Convert_Time(NumericUpDown_Time.Value, M, MS))
  15.                Time_Measure = M
  16.            Case 2
  17.                ' Hours
  18.                If NumericUpDown_Time.Value >= 597 Then NumericUpDown_Time.Value = 596 : GoTo ToolTip
  19.                Time_Out = (Convert_Time(NumericUpDown_Time.Value, H, MS))
  20.                Time_Measure = H
  21.            Case 3
  22.                ' Days
  23.                If NumericUpDown_Time.Value >= 25 Then NumericUpDown_Time.Value = 24 : GoTo ToolTip
  24.                Time_Out = (Convert_Time(NumericUpDown_Time.Value, H, MS)) * 24
  25.                Time_Measure = H
  26.            Case 4
  27.                ' Weeks
  28.                If NumericUpDown_Time.Value >= 4 Then NumericUpDown_Time.Value = 3 : GoTo ToolTip
  29.                Time_Out = (Convert_Time(NumericUpDown_Time.Value, H, MS)) * 168
  30.                Time_Measure = H
  31.        End Select
  32.  
  33.        Exit Sub
  34.  
  35. ToolTip:
  36.        'ToolTip1.Active = True
  37.        'ToolTip1.SetToolTip(Me.NumericUpDown_Time, "Max value")
  38.        ToolTip1.Show("Max value", Me.NumericUpDown_Time, 1500)
  39.        'ToolTip1.Hide(Me.NumericUpDown_Time)
  40.        'ToolTip1.Active = False
  41.  
  42.    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
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
  1. 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
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
  1.    Private Sub ComboBox_Measure_SelectedIndexChanged(sender As Object, e As EventArgs) Handles _
  2.        ComboBox_Measure.SelectedIndexChanged, _
  3.        NumericUpDown_Time.ValueChanged
  4.  
  5.        Select Case ComboBox_Measure.SelectedIndex
  6.            Case 0
  7.                ' Seconds
  8.                Time_Out = (Convert_Time(NumericUpDown_Time.Value, S, MS))
  9.                Time_Measure = S
  10.            Case 1
  11.                ' Minutes
  12.                If NumericUpDown_Time.Value >= 35793 Then NumericUpDown_Time.Value = 35792 : GoTo ToolTip
  13.                Time_Out = (Convert_Time(NumericUpDown_Time.Value, M, MS))
  14.                Time_Measure = M
  15.            Case 2
  16.                ' Hours
  17.                If NumericUpDown_Time.Value >= 597 Then NumericUpDown_Time.Value = 596 : GoTo ToolTip
  18.                Time_Out = (Convert_Time(NumericUpDown_Time.Value, H, MS))
  19.                Time_Measure = H
  20.            Case 3
  21.                ' Days
  22.                If NumericUpDown_Time.Value >= 25 Then NumericUpDown_Time.Value = 24 : GoTo ToolTip
  23.                Time_Out = (Convert_Time(NumericUpDown_Time.Value, H, MS)) * 24
  24.                Time_Measure = H
  25.            Case 4
  26.                ' Weeks
  27.                If NumericUpDown_Time.Value >= 4 Then NumericUpDown_Time.Value = 3 : GoTo ToolTip
  28.                Time_Out = (Convert_Time(NumericUpDown_Time.Value, H, MS)) * 168
  29.                Time_Measure = H
  30.        End Select
  31.  
  32.        Exit Sub
  33.  
  34. ToolTip:
  35.        Dim ToolTips_Timer As New Timer
  36.        ToolTips_Timer.Interval = 1500
  37.        AddHandler ToolTips_Timer.Tick, AddressOf ToolTips_Timer_Tick
  38.        ToolTip_Form.Show("Max value", Me.NumericUpDown_Time, ToolTips_Timer.Interval)
  39.        ToolTips_Timer.Start()
  40.  
  41.    End Sub

Código
  1.   Private Sub ToolTips_Timer_Tick(sender As Object, e As EventArgs)
  2.        ToolTip_Form.RemoveAll()
  3.        sender.stop()
  4.    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