FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Consejos para configuración de las Rejillas
Hola a todos, hoy los molesto por lo siguiente y creo que a muchos les va a servir si se puede resolver de alguna forma genérica. Lo que necesito mas que como hacerlo es una sugerencia.
Estoy diseñando unas clases bastante genéricas para configurar las grillas y me gustaria saber determinadas cosas como las puedo realizar. 1) Quisiera que me dijeran como se puede hacer para apuntar a una grilla desde la clase sin que sea solamente para un determinado componente. Digamos si hoy alguien usa las DBGrid de Delphi que funcione, pero si mañana alguien quiere usar otras como es mi caso (las SMDBGrid) estas librerías deben seguir funcionando sin tener que tocar nada en el código. 2) Teniendo en algun almacenamiento, que puede ser base de datos, XML, INI, etc como puedo hacer de forma genérica para pasar los datos de configuración de cada columna de la grilla a la clase. Con esos datos se recorre la grilla y se configura cada una de las columnas (configurar por ejemplo, alineación, ancho, si es visible, si totaliza, etc). Espero que se entienda lo que quiero hacer. Cualquier cosa me dicen y aclaro un poco mas. Saludos, El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno |
#2
|
||||
|
||||
Para lo segundo, el dbgrid de las RX tiene un método para guardar todas las configuraciones y luego cargarlos.
Imagino que las SM también lo tendrá, porque creo, solamente creo, que provienen también de las RX. |
#3
|
|||
|
|||
Me parece que no se entendió lo que pretendo con el segundo punto.
Lo que quiero es ver que forma es la mejor para pasar los datos que tengo en un almacenamiento (de cualquier tipo sea) a la clase. Sería algo como hacer esto: 1) Fuera de la clase leo los datos que estan en un almacenamiento. 2) Esos datos son pasados a la clase para que luego se recorran y se configure toda la grilla. Lo que no quiero es tener almacenados en memoria dos veces los datos leidos del almacenamiento, uno fuera de la clase y el otro dentro de la clase. Además la clase como la quiero genérica no debe importarle de donde provienen los datos que se utilizan en la misma. Saludos, El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno |
#4
|
||||
|
||||
¿Estas revolviendo peras con manzanas? ¿Datos y configuración del DBGrid?
- Datos : Generico TDataSet - Configuración del DBGrid: Cada componente puede tener variaciones así que la que te espera es grande para soportar todo. Pero hay cosas genéricas La cuestión de mezclar las dos cosas en tu TWonderMagicClassDatasetGridClass es de ingenio pero cada Dataset podría ser tan diferente que de verdad creo que estás tratando de enrollarte tu mismo en un lío que no necesitas. [OFFTOPIC] GRILLA!!!!! Por jebús!!! ¿que es eso? La grilla es la esposa del grillo. "grilla" se usa para referirse (mal-referirse) a la conducta de algunas mujeres. Se dice Grid, DBGrid, o en castellano "Rejilla" [/OFFTOPIC]
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
#5
|
||||
|
||||
Para el tema de los datos, ir recorriendo el dataset y luego ir imprimiendo cada campo casteandolo con AsString deberia servirte
Lo de guardar/leer informacion, deberias implementar los metodos SaveToFile y LoadFromFile. Usando la RTL se pueden ir recorriendo las propiedades de los objetos que te interesen (en tu caso la lista de TColumn) y guardarlas en un archivo (seria como los .dfm que genera el propio delphi) Hay un articulo bastante interesante que me ayudo a hacer algo similar: http://delphi.about.com/od/windowssh...der-writer.htm |
#6
|
|||
|
|||
No es que sea indispensable soportar todo, solo fue una consulta por si se podía hacer de alguna forma genérica. Iigulamente voy a hacerlo para los componentes que utilizo yo y luego veré en caso de necesitar otros.
El tema de tener guardada la configuración de las columnas es que si alguien quiere otra alineación para alguna de las columnas u ordenar por alguna que no esta definida, se podrá hacer sin necesidad de tocar el ejecutable. Además para cada cliente se le podrá indicar que columnas son visibles y que otras no lo son. Es por eso que se guardan los datos de antemano en algun almacenamiento. Si esto se hiciera como indican con un método de la grilla la configuración habría que hacerla antes por código, cosa que es lo que se quiere evitar. Saludos, El Rayo
__________________
Si tienes una función o procedimiento con diez parámetros, probablemente hayas olvidado uno |
#7
|
||||
|
||||
Cita:
Yo en este caso lo que haría sería una clase de configuración. Por un lado debería tener una propiedad que apunte al DBGrid, en este caso a un TCustomDbGrid o incluso a un TCustomGrid. Dependerá de las configuraciones que quiereas modificar. Esto te permitirá, utilizando RTTI, que pueda funcionar con cualquier "DBGrid" que derive de los estandard (en otro caso, milagros no se pueden hacer - o son más complicados-). Es decir, si el SMDBGrid que comentas, por ejemplo, deriva del estandard podrá funcionar con este componente, pues la propiedad Columns (Columns: TDBGridColumns) será compatible con la del estandard. Si tienes otro tipo de DBGrid, como por ejemplo el de las DevExpress, que no derivan del estandard y no comparten propiedades, en ese caso es imposible que funcione, a no ser que hagas código especial para él (aquí tendrás que usar RTTI seguro). La segunda propiedad sería a que tendría la configuración del Grid y tendrás que rellenarla (desde cualquier fuente de datos) con la configuración necesaria. En esta segunda propiedad tendrás que almacenar los datos que quieres modificar del grid. Seguramente deberá tener una estructura basada en una lista (o en una colección) para almacenar las diferentes columnas, y dentro de cada uno de estos elementos, lo necesario para almacenar alineación, formato,... (todo lo que necesites). Algo así:
A ver si van por ahí los tiros...
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#8
|
||||
|
||||
Esto es la leche, aver si entre todos entendemos lo que necesita.
Bajo mi punto de vista, lo que necesita es lo siguiente: definición de campos, Diccionario: dni -> blabla, nº de caracteres, mascara de entrada, centrado, ... importe -> numerico, mascara de entrada, maximo y minimo, rojo si negativo, ... dirección -> nº de caracteres, .. altura -> mascara de entrada, si altura > 1m azul, si menos que un metro rojo, maximo y minimo. Luego, mi programita necesita poner la info en un grid. Le digo de alguna forma qué definición tiene cada campo, y lo configuro en tiempo de ejecución como yo lo haya definido. En definitiva, defino el aspecto una sola vez, y lo utilizo en todos lados. Ahora bien, casi todos los valores a ajustar, se definen en el dataset. He estado mirando código que tengo por ahí y la verdad no es mu potable, pero básicamente hace eso. Simplemente tengo que ver qué datos quiero ajustar, y hacerlo al cargar el dataset. Es así ? Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Consejos para conexión a MySQL | keine1lust | MySQL | 11 | 10-10-2012 22:39:46 |
Información y consejos para proyecto web | Casimiro Notevi | Internet | 46 | 15-08-2010 01:39:34 |
Consejos para ahorrar. | marcoszorrilla | La Taberna | 3 | 03-02-2007 01:59:55 |
Consejos para ventanas modales ? | Tecnic2 | OOP | 14 | 16-10-2006 22:37:20 |
Consejos para desarrollar en equipo | Onti | Varios | 1 | 15-01-2004 17:50:25 |
|