FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Virtual Listview e iconos virtuales. Muy interesante pero...
Hola, llevo meses con un proyecto donde quiero visualizar listas en un listview de mas de 5000 líneas, logicamente la mejor forma era un listview virtual es decir a medida que se piden los datos los va añadiendo hay un ejemplo en las demos de delphi.
Sin embargo tambien me interesaba cargar iconos de forma virtual unos 5000 y cargarlos en memoria era una burrada y por casualidad averigue que se podia asi en Oncustomdrawitem: item.ListView.Canvas.Draw(item.Left,item.top,icono); //En vsreport Tuve que añadir un imagelist que nunca usaria a ese listview para que me dejase un espacio a la izquierda vacio para meter ese icono. Mi problema vino al añadir el XPmanifest donde la carga de estos iconos se hizo hasta 10 veces mas lenta y mi pregunta es por casualidad alguien sabe como cargar iconos virtualmente mediante otro metodo? Agradeceria mucho cualquier sugerencia. gracias |
#2
|
|||
|
|||
Prueba con tStringList
Si sólo vas a cargar iconos yo suelo emplear un tStringGrid.
En cada celda pongo sólo la ubicación del archivo .ICO y manejo el evento onDrawCell. Es muy simple y no usas tanta memoria. Sólo la parte de iconos que estas viendo. Var i : tIcon Begin with StringGrid1,canvas do Begin //-- Limpiamos el contenido visual de la celda fillrect(rect) //-- creamos el ICONO y lo asignamos i := tIcon.create; i.loadfromfile(StringGrid1.cells[Acol,Arow]); //-- Lo mostramos en la celda; draw(rect.left,rect.top,i); //-- Finalmente eliminamos de memoria el icono i.free; end End |
#3
|
|||
|
|||
Gracias Luis pero no es lo que busco
El componente ha de ser Listview busco listas vsreport vsicon....
Si alguien conoce mame32 es exactamente lo que busco hacer en mi listview, con un icono determinado en cada linea. Pero muchas gracias por contestar. |
#4
|
|||
|
|||
Creo q es posible, pero no entiendo como lo hacen.
He seguido repasando la Demo de delphi de virtual listview y mi sorpresa es que no usa ningun imagelist para esto, entonces como crea esos iconos?
Seguro que alguien esta mas puesto que yo y lo sabe, me haria un gran favor en aclararmelo, gracias |
#5
|
||||
|
||||
Lo que quieres es trabajo para el VirtualStringTree
lo he usado y es extremadamente rápido con millones de nodos, es un Treeview, pero hace las veces de ListView y Grid. En cuanto a tu pregunta, en esta linea de código, saca el imageIndex que ha de usar para pintarlo, lo hace a partir del FullID definido en el tipo de dato TShellItem. No lo he mirado con lupa, pero me parece logico que al indicar un imageIndex en el Item que se anade (de tipo TShellItem) automaticamente coja la imagen. Me ha picado la curiosidad y he hecho esto Código:
// linea de codigo 573 Item.Caption := DisplayName; Item.ImageIndex := -1; //ImageIndex; Como ves los tipos de datos del Shell son muy intuitivos y simples En contrapartida a esta tecnica, podrías usar la función: Que te devuelve un icono y puedes anadirlo a un ImageList. saludos Última edición por Lepe fecha: 14-10-2004 a las 15:17:26. |
|
|
|