Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Controlar slider y actualizar listbox

Estas en el tema de Controlar slider y actualizar listbox en el foro de Visual Basic clásico en Foros del Web. Buenas, tengo dos dudas: En primer lugar, quería que en un programa, en el cual se reproduce un archivo de música con un control activemovie, ...
  #1 (permalink)  
Antiguo 09/09/2009, 16:25
 
Fecha de Ingreso: mayo-2006
Ubicación: Vigo
Mensajes: 34
Antigüedad: 18 años
Puntos: 0
Controlar slider y actualizar listbox

Buenas, tengo dos dudas:


En primer lugar, quería que en un programa, en el cual se reproduce un archivo de música con un control activemovie, poder regular la posición de la canción a través de un slider. A ver si me explico, el control de activemovie en sí ya tiene un slider, pero quería que otro slider (en la misma form) controlase el slider del control activemovie, pero no sé qué propiedad tengo que usar.

Y la otra, quería saber cómo añadir elementos en una listbox, es decir, pasándole una string, que la añadiese como nuevo elemento a una listbox que tengo en mi programa.

Gracias, saludos.
  #2 (permalink)  
Antiguo 09/09/2009, 20:00
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Controlar slider y actualizar listbox

Hola, lo del listbox es yo creo muy basico, deberias leerte antes un manual de visual basic, se agrega con .Additem...y el slider, pues tiene una propiedad .Value conneso controlas.

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #3 (permalink)  
Antiguo 10/09/2009, 05:21
 
Fecha de Ingreso: mayo-2006
Ubicación: Vigo
Mensajes: 34
Antigüedad: 18 años
Puntos: 0
Respuesta: Controlar slider y actualizar listbox

La propiedad .Value del slider ya la conozco, pero el problema es que no sé como sincronizar ese slider con el slider del control activemovie (el control activemovie no tiene una propiedad similar, que yo sepa). Eso es lo que quiero, que Slider1.Value = "ActiveMovie1.SliderValue" o lo que sea, no sé si me explico.

Y lo de .AddItem de la listbox no conocía la sintaxis pero ya me lo he mirado. Gracias. Sin embargo me queda otra duda, la variable string que quiero manejar toma su valor en Form1, mientras que la listbox está en Form2, y no puedo hacer "List1.Additem Variable" porque no encuentra la variable, ¿cómo puedo solucionar esto? Esa string es una cadena de texto que es la ruta completa de un archivo, dada por un dirlistbox y un filelistbox que hay en form1.
  #4 (permalink)  
Antiguo 10/09/2009, 05:45
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Controlar slider y actualizar listbox

Los controles de un form se pueden usar desde otro form añadiendo delante el nombre del form del control:


List1.Additem Form1.Cadena

Si la cadena no es un control, debes declararla cono Public en el form1

Por otro lado, lo que tienes que hacer es poner en el evento Change del Slider:
ActiveMovie1.CurrentPosition=Slider1.Value

Y en el evento ActiveMovie1_PositionChange lo contrario:
Slider1.Value=ActiveMovie1.CurrentPosition

Pero lo primero es que tienes que cambiar el Max del Slider según la longitud del vídeo cargado, Activemovie1.Duration. Si Max no admite un valor tan alto, puedes ponerlo por ejemplo en 10000 y cambiar las líneas por algo como:

ActiveMovie1.CurrentPosition=Slider1.Value*int(Act ivemovie1.Duration/10000)

y

Slider1.Value=ActiveMovie1.CurrentPosition/int(Activemovie1.Duration/10000)

Creo que algo así debería servir.

Espero haber solucionado tus dudas.

Saludos
  #5 (permalink)  
Antiguo 10/09/2009, 06:41
 
Fecha de Ingreso: mayo-2006
Ubicación: Vigo
Mensajes: 34
Antigüedad: 18 años
Puntos: 0
Respuesta: Controlar slider y actualizar listbox

Muchas gracias por la respuesta.

Max no me admite un valor tan largo como es ActiveMovie1.Duration, además de que no ActiveMovie1.Duration no es un int, sino un double si no me equivoco. Convirtiéndolo a int con el código que me has dicho tú, me causa un overflow y el slider no funciona. No sé de qué podría ser.
  #6 (permalink)  
Antiguo 10/09/2009, 07:10
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Controlar slider y actualizar listbox

¿Has puesto Slider.Max a 10000?
¿Has probado a subirlo? No se cual es el máximo, pero yo he probado con 100000 y no daba error. Logicamente los 10000 de las líneas que te pasé tendrás que cambiarlos por el valor que pongas en Slider.Max

Sin ver tu código no se me ocurre otra cosa.
¿Cual es la línea que genera el error?

Saludos
  #7 (permalink)  
Antiguo 10/09/2009, 07:31
Avatar de pkj
pkj
 
Fecha de Ingreso: julio-2006
Ubicación: Órbita sincrónica
Mensajes: 899
Antigüedad: 17 años, 9 meses
Puntos: 29
Respuesta: Controlar slider y actualizar listbox

Se me está ocurriendo una razón para un error. Division by 0.
Si CurrentPosition es = 0 o la duración es menor que 10000, esta línea genera un error:

ActiveMovie1.CurrentPosition/int(Activemovie1.Duration/10000)
Ya que dividimos 0 entre un número en un caso y dividimos un número entre 0 en el segundo.

La solución sería en el primer caso, meter delante un "on error resume next" y al acabar "on error goto 0"
En el segundo caso tendrías que mirar primero si la duración es un valor menor de 10000 y usar ese valor como Slider.Max y haces que pase por las 2 líneas que escribí en primer lugar, y en caso de ser mayor de 10000, usas el "Slider.Max=10000" y le obligas a pasar por las 2 líneas más largas con los on error de antes y de después para el caso de position 0.

Creo que me he explicado.
  #8 (permalink)  
Antiguo 10/09/2009, 15:05
 
Fecha de Ingreso: mayo-2006
Ubicación: Vigo
Mensajes: 34
Antigüedad: 18 años
Puntos: 0
Respuesta: Controlar slider y actualizar listbox

La duración (ActiveMovie1.Duration) es siempre un número decimal, nunca un entero, por tanto no lo puedo fijar como Slider1.Max porque esta propiedad tiene que ser un entero. No sé si ahí estará el problema.

Las pruebas las estoy haciendo con el mismo wav, cuya duración es 19,94.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:48.