Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-10-2004
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Question Como hacer una lista de temas....

Hola a todos!
Tal vez lo que pregunte sea una tontera, pero a mi me esta sacandos canas!:
Tengo un reproductor de mp3 y quisiera que la playlist se vea como en el Winap, algo como:
001 Artista - Tema mm:ss
002 Artista - Tema mm:ss

De que manera lo puedo hacer?... habrá un componente que permita darle ese diseño?
Probe con un TMemo y TListBox nada!
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #2  
Antiguo 15-10-2004
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Un grid?

O darte una pasaita por www.torry.net o www.tmssoftware.com. Tambien de mi blog recuerdo este software, que tiene controles estilo WinAmp: http://www.anwod.com/lus/pdelphiscript.htm
__________________
El malabarista.
Responder Con Cita
  #3  
Antiguo 26-10-2004
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Post

Disculpa, pero en dichos sitios no encuentro lo que deseo... no se si soy yo el medio bestia que no encuentro nada... pero hasta el momento no encuentro algo que se adapte a lo que quiero...
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #4  
Antiguo 26-10-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Delphius
Hola a todos!
Tal vez lo que pregunte sea una tontera
A ver si mi pregunta no es más tonta.

¿Qué te impide poner una cadena como

001 Artista - Tema mm:ss

en un ListBox?

// Saludos
Responder Con Cita
  #5  
Antiguo 26-10-2004
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Unhappy Rta a Roman

Roman, no es que me lo impida... se hacerlo pero no de la manera que quiero...
En el Winamp una playlist se ve de esta forma:
001 Artista1 - Tema1 mm:ss
002 Artista2 - Tema2 mm:ss
....
00n Artistan - Teman mm:ss

Y la verdad es que no encuentro manera de que los números correspondientes a los temas queden alineados a la izquierda, que la duración a la derecha... ¿Me explico?
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #6  
Antiguo 26-10-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
que los números correspondientes a los temas queden alineados a la izquierda, que la duración a la derecha
Bueno, es que tal como pones el ejemplo de listado estos detalles no quedan claros.

Si quieres que el listado en general se vea exactamente como el del WinAmp supongo que lo mejor será conseguirte algún componente como te comenta mamcx.

Pero para lograr este tipo de alineamientos yo usaría un TListView con estilo vsReport. En la primera columna pondría el número de tema, en la segunda el tema en sí y en la tercera la duración. Las columnas de un TListView tienen la propiedad Align que te permite alinear el texto.

Ajustando los colores de fondo y de fuente, ocultando los encabezados y poniendo RowSelect en true, yo creo que queda bastante parecido- que no igual -a lo que quieres.

// Saludos
Responder Con Cita
  #7  
Antiguo 05-11-2004
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Unhappy Respuesta a Roman...

Roman, probe de tu manera, pero la verdad es que a pesar de en cuanto a estética si queda bien... pero el componente TreeView no me da la funcionalidad que posee o me facilita el ListBox, pero he aqui que en cuanto a estética el ListBox no es bueno.
Y como no encuentro un componente que me permita hacer lo que deseo, voy a recurrir a crearlo yo. Pero tengo una duda: ¿Cómo puedo programar las alineaciones para que se vean como en el Winamp?...
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #8  
Antiguo 05-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Delphius
pero el componente TreeView no me da la funcionalidad que posee o me facilita el ListBox
Esto sí me sorprende. ¿Qué tipo de funcionalidad deseas? ¿Qué hace un ListBox que no pueda hacer un ListView? Cuéntame y quizá haya solución.

// Saludos
Responder Con Cita
  #9  
Antiguo 05-11-2004
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Pues, una facilidad que me brinda es la posibilidad de abrir un archivo (en este caso una playlist) rápidamente gracias al LoadFromFile().... además, permitiría agregar y eliminar un tema de forma mas fàcil (Add) y no tan engorroso como lo debo hacer con el TreeView (Add item, sub items), he inclusive me permitiría grabar el contenido... por ahora son esas...
Me explico?
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #10  
Antiguo 05-11-2004
Avatar de diegofhernando
diegofhernando diegofhernando is offline
Miembro
 
Registrado: may 2003
Ubicación: Locombia papá!
Posts: 267
Poder: 22
diegofhernando Va por buen camino
Q tal... hmm como le veo amigo Delphius kizas no estas usando el componente q te sugirio Roman... veo q en tu ultima respuesta dices TreeView y Roman te sugiere un ListView... aki va algo de codigo de como puedes usar el ListView con 2 columnas... lo pongo solo por si acaso

Código Delphi [-]
procedure tmiform.creaitem;
var
miItem: TListItem;
begin 
       with MyListView do
              begin
              item:= items.add;
              item.caption:= 'nombre del tema' ;
              item.subitems.add('10:00');
              end
end;

seria cuestion de repetir esto para cada item. Parto del echo q ya insertaste el ListView (MyListView) y q tienes su propiedad ViewStyle = vsReport. No olvides crear las columnas para los items (2 clicks sobre el ListView). Bien creo q con eso seria.

Salu2
__________________
Diego. Colombia es pasión.
Responder Con Cita
  #11  
Antiguo 05-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Claro que será un poco más de trabajo programar un ListView que un ListBox pero se compensa con creces con lo que ganas. Por ejemplo, seguro querrás que tus usuarios puedan ordenar la lista por artista, duración, género, título, etc., simplemente dando click sobre la columna correpondiente. O bien dar la opción de búsqueda por cualquier columna, o mostrar algún icono informativo para cada item, etc., etc., etc. Si a esto le juntas lo del diseño, creo que de hecho es más fácil con el ListView que con el ListBox ¿no?

Claro que puedes programar tu propia componente pero en tal caso partir de un ListView me parece buena idea.
// Saludos
Responder Con Cita
  #12  
Antiguo 06-11-2004
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Question

diegofhernando disculpa, si estuve usando el componente indicado... lo que pasa es que en el foro me equivoque de nombre. Además el código que tu expusiste es lo que quiero evitar...
Roman, no te discuto que esa son funcionalidades bastantes buenas, pero a lo que voy ... (y creo que es muy importante para el usuario) es que al ejecutar la aplicación instantáneamente aparezca el contenido de la playlist. En un ListBox esto se logra de manera muy sencilla: ListBox1.Items.LoadFromFile(), en donde supongamos que paso como parámetro un arhivo Mp3PlayList.tag en donde tengo ya los datos.
Si usara el ListView no podría hacer esto, con lo que debería hacer un código LeerPlaylist() en donde debería leer línea por línea y determinar cada uno de los datos a almacenar en cada columna. Y esto, en cuestión de tiempo es un bochorno. ¡Un usuario que poseea una lista ,digamos razonablemente 200 temas, no va a esperar que le aparezcan los resultados en gotitas; desea resultados ya!
¿Entiendes mi punto de vista?.
Si tengo en cuenta esto, el ListBox me viene de 100. Claro está, que a la hora de agregarle temas, el ListBox no es el indicado.
Si tienes una idea lo bastante buena como para que con el ListView pueda abrir un archivo, te la agradecería.
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #13  
Antiguo 06-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Delphius
¡Un usuario que poseea una lista ,digamos razonablemente 200 temas, no va a esperar que le aparezcan los resultados en gotitas; desea resultados ya!
Bueno pero...

¿qué te hace pensar que el tiempo extra que te tome programar LeerPlaylist() se reflejará en la velocidad con que se cargue el ListView?

Te aseguro que el usuario no se percatará de la diferencia. Más aún, ¿te has fijado en cómo se comporta un ListBox con muchos ítems? Llega un momento en que el desplazamiento se hace lento, pausando un poco en cada cambio de página.

Por otra parte no alcanzo a ver cómo almacenas los datos en el archivo que carga el LiisBox. ¿Cómo separas los campos? ¿Cómo editas o agregas entradas?

Ahora bien, ¿has pensado en usar ClientDataSets? Con ellos puedes almacenar las listas de canciones como si fuera una base de datos pero sin necesidad de un motor de bd. La conveniencia es que tienes a tu disposición todos los controles DBAware para agregar/editar canciones de una lista incluyendo un DBGrid que te cagará en automático la lista tan pronto abras el data set.

Incluso puedes usar un ClientDataSet para alimentar a un ListView. Aunque pierdes la potencia de los controles DBAware para el listado, es sencillo programar la rutina para cargarlo y sigue siendo rápido. ncluso si manejas listas realmente grandes, puedes usar el ListView en modo virtual con lo que los datos se muestran ipso-facto.

En fin, creo que tienes alternativas mucho mejores que un ListBox.

// Saludos
Responder Con Cita
  #14  
Antiguo 06-11-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
La solución que yo propongo no tiene nada que ver con lo dicho hasta ahora, y es Simplista al máximo, pero en determinadas ocasiones me ha dado buen resultado.

Poner una fuente no proporcional (Courier o Courier New) y ajustar los espacios simplemente con una rutina que añada espacios o ceros. PadRight y PadLeft de las Rxlibs van muy bien para ese propósito.

No seas muy duro conmigo Delphius, sé que no es la solución óptima. Simplemente dí que no te interesa esta solución

Saludos
Responder Con Cita
  #15  
Antiguo 06-11-2004
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Estas mezclando cosas... El control ListView se usa en el explorer y otros programas y se desempeña bien...otra cosa es que de un poco mas de lata para programar... Ahora, como son las cosas:

- Haces el truco de fuentes
- Usas el listview
- Consigues un control de terceros (que con el tiempo que lleva el thread ya hubieras evaluado! si te fijaste en el link?)

Si necesitas la mas brutal velocidad al cargar arboles/listas, necesitas un arbol/lista brutal, como http://www.delphi-gems.com/VirtualTreeview/VT.php pero requiere mas codigo (eso si: Mas velocidad es IMPOSIBLE!) Ademas este control se transforma a cualquier cosas, incluso grids...
__________________
El malabarista.
Responder Con Cita
  #16  
Antiguo 06-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por mamcx
Si necesitas la mas brutal velocidad al cargar arboles/listas, necesitas un arbol/lista brutal, como http://www.delphi-gems.com/VirtualTreeview/VT.php pero requiere mas codigo (eso si: Mas velocidad es IMPOSIBLE!) Ademas este control se transforma a cualquier cosas, incluso grids...
Ciertamente en cuestión de presentación el VirtualTreeView es insuperable. Pero difiero un poco en lo de la velocidad. Es decir, sí que es rápido, pero un ListView en modo virtual es igual de rápido y creo que para lo que se requiere basta y sobra. Primero porque la virtualidad es necesaria sólo para cantidades verdaderamente grandes de datos- y 200 canciones o incluso 500 no lo son, y segundo porque la programación del VirtualTreeView es más compleja.

Por otra parte, tampoco deshecharía los ClientDataSets tan rápido.

// Saludos
Responder Con Cita
  #17  
Antiguo 16-11-2004
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cool Listo... logrado

Listo el pollo!... logré lo que tanto queria y con el ListBox.
Realicé un procedimiento que lee linea por linea un archivo de registros en donde guardo toda info de los temas... ha decir verdad quede maravillado con la velocidad de reación de dicho algoritmo, nunca pensé que fuera tan rápido.
Para lograr ese "ordenamiento" lo que hago es "rellenar" con espacios en blanco hasta que sea necesario...
Gracias a todos por su ayuda...
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 23:11:14.


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