Barra de progreso

Necesito información la barra de progreso. Mi problema es que estoy haciendo un formulario y necesito una barra de progreso.
Os explico como es mi programa para que os hagáis una idea :
Es de una embarcación es un winche de pesca que tira las redes al mar pero necesito una barra de progreso que me vaya poniendo la cantidad de metros de red que me va a tirar al mar, la barra de progreso puede ir hacia a delante y hacia detrás aleatoriamente y en determinados momentos se le puede cambiar la velocidad o sea aumentar o disminuir dependiendo de unos cálculos. Este es el problema que no sé cómo puedo hacer para que la barra de progreso varia tanto la velocidad como la trayectoria. Me es muy urgente y me sería de mucha utilidad vuestra información.

5 Respuestas

Respuesta
1
A ver... antes de arriesgar algo necesito que me des cierta info...
Como haces para saber cuando estas tirando la red o recogiendo... me refiero a qué aparato usas para que conecte con el sistema de pesca.. a ver.. no se si me explico...
Te gráfico mi mente para que te ayude a entender lo que quiero preguntar.
Un motor para arrojar la red. El eje del motor a una polea que seguun la medida, una vielta es un metro de soga (o red). Necesito unn cuenta vueltas que esté conectado a la PC para que me indique la cantidad... si tienes esto, no es necesario un ProgressBar... solo reflejar el numero de vueltas que dio el motor... pero claro que si tienes esa info se puede poner un progressbar tranquilamente...
Me preocupa más como conectas con el aparato de pesca que el progressbar en si...
Cuéntame
En realidad sólo lo que estoy haciendo es una demostración o sea que no es el programa original y no tengo que conectarme al sistema de pesca por lo que todo lo que hago son por fómulas a ver si me explico... a mi me dijeron que como es un demo pusiera en el progressbar números aleatorios que lo mismo fuera hacia delante o hacie atrás osea que con un random me basta, pero el problema es que el usuario si en un determinado momento quiere que el sistema vaya más rápido aumentaría la presión o sea el introduciría en un textbox la presión que quiere y por una fórmula (x) que genera el propio sistema que ahora no la tengo ya tendría la velocidad, ahí es donde tengo mi problema que no sé como variar la velocidad y no se si el progressbar me sirve para eso. Muchas gracias por contestarme rápidamente me es muy urgente esta información
Ahora es me queda más claro...
Para la simulación puedes usar un control TIMER. Tiene la particularidad de ejecutar una serie de instrucciones cada cierto tiempo (hasta que pares el TIMER).
Es el control que tiene un reloj como imagen.
La propiedad que te interesa es INTERVAL. Valor 0 (cero) no ejecuta nada, valor 60000 equivale a un minuto. Es decir que 1 segundo es igual al valor 1000 en la propiedad INTERVAL.
Si en el procedimiento del TIMER colocas algo así:
ProgreesBar1.Value=ProgreesBar1.Value + 10 (o 20, 100, 500, depende de los valores que le des a MAX.....)
Entonces incrementa el valor del progressbar PERO, esto lo hará cada (por ejemplo), 1 segundo. Si mediante el Text cambias el valor de la propiedad INTERVAL a 2000 entonces el incremento seria cada 2 segundos...
Ten en cuenta que si el valor es 0 entonces para la ejecución de las instrucciones... la pregunta es ¿cómo hacer para que disminuya el ProgressBar?
Debes crear dos procedimientos dentro del TIMER. Uno para incrementar el PROGREESS (cuando dan soga a la red) y otro para disminuirlo (para cuando recogen la red).
Estos se ejecutaran según se seleccione en el form RECOGER o LANZAR.
Y debes poner algo para AUMENTAR o DISMINUIR la velocidad.
Espero que te sirva esta explicación..
Sino, avisame que preparo un ejemplo con esto que te explico y te lo mando por mail (escríbeme el mail también)
Suerte !
PD: Ojo.. esto es solo para la DEMO. En la realidad habría que ver como reemplazar el PROGRESSBAR con el aparato de pesca real !
Muchísimas gracias por el interés que me ha prestado, me ha sido de gran utilidad, si durante el transcurso del programa tengo alguno otra duda, no dudaría en consultarle.
Atentamente
Peggy
Respuesta
1
Vamos a hacer una explicación de los métodos de la progressBar algo aplicados a tu problema claro :)
-Para establcer los límites superior e inferior de tu barra de progreso (valor de ejemplo, aunque el 0 es el valor inferior más usual) :
ProgressBar1.Min = 0
ProgressBar1.Max = 100
- Para marcar el valor actual de tu barra :
ProgressBar1.Value = X 'Donde X sea numérico
De esta forma cuando asignes un valor a Progressbar. Value, aparecerán los cuadros característicos en la barra.
Lo más normal es que los vayas aumentado progresivamente. Si no hay otro criterio, puedes usar un timer ( si sabes como se usa te incluyo un pequeño código de ejemplo)
Private Sub Timer1_Timer()
Static lCount As Long
lCount = lCount + 20 * Avanti
If lCount > 100 Then
Timer1.Enabled = False
Command1.Enabled = True
lCount = 0
End If
If lCount > 0 Then
ProgressBar1.Value = lCount
Else
ProgressBar1.Value = 0
End If
Como puedes ver cada vez que se lance el evento del timer, se suma 5 a la progressBar, de manera que va aumentado paulatinamente.
Timer : en caso que no sepas usarlo : debes incluir un control Timer en el formulario (el reloj que hay en la barra de herramientas ) e incluir el código anterior.
El Timer. Enabled debe estar a falso inicialmente para que no avance la barra de progreso y debe activarse cuando le den al botón de avanzar... por ejemplo.
Verás que hay una variable avanti. Esta variable es numérica y la he incluido para lo siguiente :
Si la pones a 1, la barra avanzará. Si está a -1 la barra retrocederá, ya que la suma se convertirá en una resta.
El cambio de 1 a -1 debes ponerlo en el punto adecuado claro... para probarlo yo lo he puesto dentro de un botón cualquiera que al presionarlo cambiaba el crecimiente/decrecimiento de la barra.
Supongo que en tu caso será algo diferente, pero solo tienes que adaptarlo ligeramente para que funcione.
Espero que la contestación te haya servido de ayuda.
Si te queda alguna duda, no dudes en preguntar.
Magne
Respuesta
1
Bueno no es difícil...
Aunque yo te recomendaría utilizar un label que una barra de progreso para lo que necesitas hacer... pero suponiendo que usas una barra de progreso, las propiedades que tener que pre-configurar
Son:
ProgressBar1.Min = 0
ProgressBar1.Max = 100
Estas dos propiedades indican el mínimo y el máximo respectivamente, en máximo ponele la cantidad de metros total de lo que puede llegar la red al mar.
En mínimo te conviene poner siempre 0, ya que seria cuando la red esta toda recogida.
Y con la propiedad Value
(ProgressBar1.Value = xxx)
Ahí pones el valor actual de la barra, que seria los metros que lleva la red sumergida.
Gracias por contestarme, pero el problema que tengo es que esa barra en un momento determinado podría cambiar de velocidad y es lo que no sé, si pongo un timer siempre la velocidad va a ser la misma y el programa tiene que permitir que aumente o disminuya la velocidad y eso se tiene que refeljar en la barra, realmente no se si deba utilizar un Progressbar o en este caso necesitaría otro tipo de control que desconozco.
Ok, ¿pero el programa como sabe cuando tiene que cambiar la velocidad?
¿Estas utilizando algún tipo de automatización por relays o algo así?
En el programa pongo un comandbutom que el usuario puede aumentar o disminuir la velocidad en realidad aumenta o disminuye la presión y a través de una fórmula se puede variar la velocidad pero el problema es que cómo aumento o dismunuyo la velocidad si la barra de progreso me permite realizar esta operación.
Es que la barra de progreso cambiara su velocidad dependiendo del valor que vayas asignando a su propiedad Value.
Proba alternando la propiedad Value de la barra de progreso dentro del commandbutton que hace dicha fórmula, eso debería alterar la velocidad de proceso.
Respuesta
1
He estado mirando el Visual Basic ya que nunca había usado una barra de progreso, y por lo que veo hay 3 propiedades básicas. Yo he metido el Visual Basic 6 y he agregado el componente Common Controls de Microsoft.
Las propiedades son:
Min, Max, Value.
Las dos primeras indican los valores mínimo y máximo de la barra, mientras que el último indica cuál es el valor de la barra.
Por ejemplo, en el Load() del formulario puse el siguiente código:
barra.Min = 0
barra.Max = 500
barra.Value = 300
Al iniciar la aplicación me apareció una barra de progreso detenida más o menos en la mitad (algo más adelante), es decir, a 300 de 500.
Para hacer que la barra avance cada cierto tiempo puedes usar el control Timer. No se si lo conoces, pero por si acaso te explico.
Lo colocas en el formulario y es invisible. Tiene sólo un evento: Timer. Este se ejecuta cada cierto tiempo automáticamente mientras la aplicación esté abierta y mientras tengas el Timer activo (Enabled). Si pones la propiedad Interval a 1000, el código se ejecutará cada segundo (mil milisegundos).
He hecho una prueba poniendo interval a 500 milisegundos, y he puesto el siguiente código en el evento Timer:
barra.Value = barra.Value + 30.
La barra ha ido aumentando hasta el final, aunque me ha dado error al final (claro, la propiedad intentaba pasar de su valor máximo). Esto tiene solución fácil, y es no seguir aumentando siempre y cuando estemos en el máximo.
Para eso que mencionas, no tendrías más que restar valores a la propiedad Value. El tema se complica más o menos dependiendo de cuáles sean esos cálculos y dónde quieras hacerlos. Tendrías que realizar operaciones y poner condiciones en el Timer supongo, para que el programa haga chequeos a valores que tu manejes.
Espero que con lo que dije te haya servido de ayuda, ya que como comprenderás no puedo codificar nada sobre tu caso, ya que no prácticamente nada sobre la aplicación.
Para lo de la velocidad se me ocurren dos opciones:
1- Cambiar el la propiedad Max en tiempo de ejecución
2- Aumentar el intervalo del Timer para que se ejecute cada menos tiempo.
Si puedo ayudarte en algo más o no ha quedado claro algo, dime, por aquí estaré.
Muchas gracias por responderme, me has explicado con mucha claridad ahora voy a intentar realizar algo si durante la marcha me surge algún problema no dudaría en preguntarte de nuevo.
Un saludo
Respuesta
1
Se me ocurre esto:
Coloca el una barra de progreso y un control Timer en tu formulario, luego checa este código
Private i As Integer
Private Sub Form_Load()
ProgressBar1.Min = 0 'valor minimo de la barra
ProgressBar1.Max = 100 'valor maximo de la barra
Timer1.Interval = 100 ' se ejecuta el procedimiento cada 100 milisegundos
End Sub
Private Sub Timer1_Timer()
ProgressBar1.Value = i 'aumentar o disminuir la barra
i = i + 1 'en este caso aumentar la barra
'i=i-1' asi decrementas la barra
End Sub
Con la propiedad Timer1. Interval puedes aumentar o disminuir la velocidad con la que se llenara la barra, el valos esta en milisegundos.
PD:

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas