Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-08-2008
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Cita:
Empezado por mancurnino Ver Mensaje
¿Hay alguna forma de que estos sonidos que se han añadido a la lista de reproduccion, se reproduzcan uno detras de otro en modo asincrono? Ya que asi, tengo que esperar a que acaben todas las canciones para poder seguir trabajando en la ventana en la que estoy, y me gustaria estar en mi ventana haciendo cosas mientras se va escuchando la lista de reproduccion.

Luego he tenido que poner el metodo Execute en la parte publica porque sino no puedo llamarlo desde otra Unit no?
A las dos preguntas te respondo con la misma respuesta, la clase TSound que pongo de ejemplo es descendiente de TThread, por lo tanto el método Execute no lo tienes que llamar tu, si no que se llama de forma automática y además se ejecuta en un hilo diferente al principal por lo que es imposible que bloquee ninguna ventana.

Si usas el código tal como lo pongo en el ejemplo no tendrás ningún problema.
Responder Con Cita
  #2  
Antiguo 02-08-2008
mancurnino mancurnino is offline
Miembro
 
Registrado: feb 2008
Posts: 65
Poder: 19
mancurnino Va por buen camino
Vale, muchas gracias jeje. Me va bien, creia que para poner la lista en marcha habia que hacer el .execute pero lo hace directamente al añadir una canción y lo ejecuta de forma asincrona y puedo seguir trabajando en la ventana.

Ahora tengo otra pregunta: El caso es que tengo en un resource varias canciones de varios cds; pongo un cd en cada panel y segun elija el cd, me sale un panel u otro con las canciones de ese cd. Bien, por ejemplo en un panel tengo 14 canciones. y cada cancion tiene un boton asociado, es decir:

Código:
procedure TV_Principal.Button1Click(Sender: TObject);
var
  ListaReprod: TSound;
begin
  ListaReprod:= TSound.Create;
  ListaReprod.Add('CD1_1');
  ListaReprod.Add('CD1_2');
  ....
  ListaReprod.Add('CD1_14');
end;
Aqui lo que hace, es algo asi como el reproductor Windows Media Player, que pones una cancion de un cd, y escuchas esa primero, y luego el resto del cd, dando la vuelta como si fuese un loop y volviendose a ejecutar todas las canciones, asi que si por ejemplo pones la cancion 5, te ejecuta desde la 5 hasta la 14 y luego desde la 1 hasta la 5 de nuevo. En el ejemplo que pongo, es la cancion 1, y por lo tanto añado las 14 canciones a la lista, empezando por la 1, pero si hubiese puesto la cancion 5 seria asi:

Código:
procedure TV_Principal.Button5Click(Sender: TObject);
var
  ListaReprod: TSound;
begin
  ListaReprod:= TSound.Create;
  ListaReprod.Add('CD1_5');
  ListaReprod.Add('CD1_6');
  ....
  ListaReprod.Add('CD1_14');
  ListaReprod.Add('CD1_1');
  ListaReprod.Add('CD1_2');
  ListaReprod.Add('CD1_3');
  ListaReprod.Add('CD1_4');
end;
Nose si me explico jeje, supongo que si. El caso es que quiero que haga como el windows media player, que si ejecuto esta cancion numero 5, me ejecute las 14 empezando desde la 5, y cuando me ejecute la ultima, que seria la 4, vuelva a empezar desde la 5, como si iciese otro click en esta cancion numero 5, y que fuese un loop que se repitiese hasta que hiciese click en otra canción.

Haber si puedes ayudarme, gracias¡

Última edición por mancurnino fecha: 02-08-2008 a las 10:23:25.
Responder Con Cita
  #3  
Antiguo 02-08-2008
mancurnino mancurnino is offline
Miembro
 
Registrado: feb 2008
Posts: 65
Poder: 19
mancurnino Va por buen camino
Hola de nuevo, he estado investigando, y me sale algun error:

Por ejemplo al ejecutar una cancion lo que quiero es lo que te he comentado en el comentario anterior, que me pare la lista de reproduccion que se estaba ejecutando (si es que se estaba ejecutando alguna), y que me ejecute la nueva lista relacionada con la cancion de ese boton, por ejemplo la lista que empieza por la cancion numero 5.

¿Como hago para que la lista que se estaba ejecutando, si es que habia alguna, se pare al cambiar de cancion (button), y luego me ejecute la lista de esa cancion?

Hasta ahora lo que he hecho es declarar la lista arriba del todo, y que sea global para toda la unit principal que tengo, de modo que al ejecutar cualquier cancion, ace sus efectos en la misma lista. Ejemplo, las canciones numero 2 y 7:

Código:
 
procedure TV_Principal.CD1_2Click(Sender: TObject);
begin
  ListaReprod.Terminate;
  ListaReprod:= TSound.Create;
  ListaReprod.Add('CD1_2');
  ListaReprod.Add('CD1_3');
  ListaReprod.Add('CD1_4');
  ListaReprod.Add('CD1_5');
  ListaReprod.Add('CD1_6');
  ListaReprod.Add('CD1_7');
  ListaReprod.Add('CD1_8');
  ListaReprod.Add('CD1_9');
  ListaReprod.Add('CD1_10');
  ListaReprod.Add('CD1_11');
  ListaReprod.Add('CD1_12');
  ListaReprod.Add('CD1_13');
  ListaReprod.Add('CD1_14');
  ListaReprod.Add('CD1_1');
end;
 
procedure TV_Principal.CD1_7Click(Sender: TObject);
begin
  ListaReprod.Terminate;
  ListaReprod:= TSound.Create;
  ListaReprod.Add('CD1_7');
  ListaReprod.Add('CD1_8');
  ListaReprod.Add('CD1_9');
  ListaReprod.Add('CD1_10');
  ListaReprod.Add('CD1_11');
  ListaReprod.Add('CD1_12');
  ListaReprod.Add('CD1_13');
  ListaReprod.Add('CD1_14');
  ListaReprod.Add('CD1_1');
  ListaReprod.Add('CD1_2');
  ListaReprod.Add('CD1_3');
  ListaReprod.Add('CD1_4');
  ListaReprod.Add('CD1_5');
  ListaReprod.Add('CD1_6');
end;
Algo asi es lo que tengo, pero me lo hace mal. La primera vez que pulso un boton, por ejemplo el de la cancion 2, si que me hace la lista y me la reproduce, pero cuando ejecuto la 7 por ejemplo, no me para la lista anterior, y no se me reproduce la nueva. Para pararla pongo .terminate al principio de cada boton, tb he probado con .destroy pero tampoco me va bien, lo que quiero es que el sonido se pare, y se sigue ejecutando, no sé bien que procedure utilizar o como modificar el codigo para que haya una especie de procedure "Stop". Y aparte necesito saber como se puede repetir esta lista de cada boton hasta que cambie de cancion, es decir, que si pulso el boton 2 que me ejecuta la lista de 14 canciones empezando por la 2, me ejecute las 14 una vez, y otra, y otra...

Gracias por la ayuda

Última edición por mancurnino fecha: 03-08-2008 a las 00:01:24.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
sonidos midi en delphi JefeNet Varios 4 14-10-2007 20:03:16
Sonidos en Safari (MAC) CHiCoLiTa HTML, Javascript y otros 5 11-10-2006 14:57:36
Como encadenar DropDownList selman .NET 10 30-06-2005 18:22:01
Sonidos con delphi el_enigma1 OOP 2 14-01-2005 00:31:30
Insertar sonidos egm1802 API de Windows 1 23-04-2004 18:05:39


La franja horaria es GMT +2. Ahora son las 13:49:13.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi