Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-07-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Cargando datos en un control de listas [TListView]

En los últimos tiempos, cuando tengo que mostrar un conjunto de filas al usuario y no es necesario que este conjunto sea editable, en vez de utilizar la archiconocida rejilla (TDBGrid) echo mano de un control de listas TListView.

No sólo por el cambio estético, que puede ser discutible, sino también por la posibilidad de mostrar casillas de verificación (checkboxes) asociadas a cada fila. Basta con asignar True a la propiedad Checkboxes del control para que el usuario pueda seleccionar un conjunto de filas con la mayor tranquilidad del mundo.

Si es usted de los que no se resigna a perder las líneas horizontales y verticales de las rejillas de Delphi, puede activar la propiedad GridLines y sus sueños se harán realidad. Por último, puede incluso intercambiar la posición de las columnas si activa FullDrag. Sólo por mencionar algunas posibilidades evidentes.

Claro, Delphi no trae entre sus componentes una TDBListView; hay que cargar los datos de una tabla o consulta directamente en la propiedad Items del control. No es una tarea muy complicada, pues en el número de Junio de Mundo Delphi muestro un ejemplo de cómo ayudarnos con un frame para simular una rejilla de datos...

... lo malo es que si cargamos chapuceramente los datos, la operación se ralentizará inutilmente, y el efecto visual será bastante desagradable de observar. Sin embargo, un par de trucos sencillos nos evitarán este inconveniente:

Antes de comenzar la carga, llame al método BeginUpdates de la propiedad Items del control, y cuando haya terminado llame a su pareja: EndUpdates. La primera llamada evita que se redibuje el control cada vez que se añade una nueva línea.

El segundo truco es más importante, por ser menos conocido. Antes de empezar a añadir filas, asigne a la propiedad AllocBy del TListView el número de registros que tiene pensado cargar. Normalmente el conjunto de datos que se va a explorar contiene un puñado de filas. ¡De no ser así no tendría mucho sentido utilizar TListView!

De modo que no debe ser traumático para Delphi el que utilicemos la función RecordCount para saber con cuántos registros contamos. La propiedad AllocBy informa al control sobre el número de elementos que se van a almacenar en memoria.

Si no ajustamos este número de antemano, cada vez que añadimos un nuevo elemento, el control tiene que pedir memoria dinámica, lo que disminuye la velocidad y aumenta considerablemente el riesgo de fragmentación.
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


La franja horaria es GMT +2. Ahora son las 02:09:46.


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