Spanish [SOLUCIONADO] Valor mínimo e intervalo fijo del Seekbar

tomky

Active Member
Licensed User
Hola.
¿Cómo puedo hacer que mi Seekbar no empiece en cero y que sea progresivo, a intervalos o steps?

Gracias.
 

bgsoft

Well-Known Member
Licensed User
Longtime User

tomky

Active Member
Licensed User
Hola.
Perdonad pero soy bastante novato.
¿Quieres decir bgsoft que con el seekbar normal no se puede y hay que utilizar la clase Horizontal Seekbar?
¿Esa clase no coge los colores del sistema operativo?
Con ella no veo claro como poner el valor mínimo permitido ni los intervalos.

Actualmente mi seekbar normal coge el valor de una base de datos, con SeekBarRadio.Value = map1.Get("radio").

Y muestra su cambio de valor con

Sub SeekBarRadio_ValueChanged (Value As Int, UserChanged As Boolean)
If UserChanged Then
lblMostrarRadio.Text = SeekBarRadio.Value & " m"
End If
End Sub

Gracias.
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

¿Quieres decir bgsoft que con el seekbar normal no se puede y hay que utilizar la clase Horizontal Seekbar?
No sabia que Seekbar estabas utilizando, pero sea cual sea, puedes poner el valor de inicio con Value, si es un Seekbar "normal" puedes decirle el valor maximo con Max, y si es la clase llamas a lo que te pongo mas abajo y le pasas el valor que quieras.
B4X:
Public Sub setMaxandMin(MinValue As Int, MaxValue As Int)

¿Esa clase no coge los colores del sistema operativo?
Ponle el color que quieras:
B4X:
Hbar.setColors(Colors.Black, Colors.white, Colors.rgb(255,180,180), Colors.white)

Y vuelvo a la pregunta original:
¿Cómo puedo hacer que mi Seekbar no empiece en cero

Cuando arranques la aplicación, dale el valor de inicio que quieras a value:
B4X:
SeekBarRadio.Value= ValorQueQuieras

que sea progresivo, a intervalos o steps?

B4X:
  for n = ValorMinimo to ValorMaximo
    SeekBarRadio.Value= n
  next

Saludos
 

tomky

Active Member
Licensed User
Perdona bgsoft. Me he explicado mal.
Quería decir poner un valor mínimo diferente de cero, en lugar de valor inicial. Pues el valor inicial lo coge de la base de datos.
¿No se le puede poner un valor mínimo al Seekbar normal?
Y ese for no me ha funcionado en él tampoco.

Saludos
 

bgsoft

Well-Known Member
Licensed User
Longtime User
Hola

¿No se le puede poner un valor mínimo al Seekbar normal?

No, ya te comenté que no, pero lo tienes muy facil, como te he dicho, cuando lo inicialices ponle un value al valor minimo que tu quieras.

Y ese for no me ha funcionado en él tampoco.
Para que te funcione tienes que darle un valor a las variables ValorMinimo y ValorMaximo, asi te funcionará.

Saludos
 

tomky

Active Member
Licensed User
Gracias bgsoft, pero al final hemos resuelto "a mano" el problema del valor mínimo y del intervalo fijo del SeekBar normal.
Ahora nuestro mínimo es 100 y el máximo 10000. Y va a intervalos de 100 en 100.

Para ello, hemos creado una variable global llamada radio.

En el Sub Activity_Create, le hemos dado un máximo a escala: SeekBarRadio.Max = 100.

En el Sub SeekBarRadio_ValueChanged, hemos puesto:

If UserChanged = False Then Return

If SeekBarRadio.Value < 1 Then SeekBarRadio.Value = 1 'valor mínimo "forzado" (100 en realidad)

radio = SeekBarRadio.Value * 100 'lo que proporciona.
lblMostrarRadio.Text = radio & " m" 'lo que muestra en realidad la etiqueta, y 'm' de metros.
-----------------

Enviamos radio a la base de datos.

Y al recibir el radio de la base de datos:
SeekBarRadio.Value = map1.Get("radio") / 100 'para mantener la misma escala de trabajo.

Saludos.
 
Last edited:
Top