2011-11-02 10 views
7

Estoy tratando de crear mi primera aplicación basada en FireMonkey, y choco contra una pared. El único control de lista virtual que puedo encontrar es tGrid.Firemonkey: diseño de tGrid o componentes de cuadrícula/lista alternativos (virtual)

Este componente es bastante bueno, pero no entiendo cómo ampliarlo o personalizarlo. Entiendo que hay una columna tCheckbox, columna tImage, etc., pero ¿qué sucede si necesito un ButtonColumn o algo así?

También me gustaría diseñar una fila, según el estado de los datos que representa.

Un ejemplo: si los datos que se representan en la fila tienen "Error = Verdadero", se deben mostrar en rojo.

¿Alguien tiene un problema similar? ¿O encontró componentes alternativos de lista virtual/cuadrícula? O incluso algunos consejos sobre el uso del componente tGrid. Estos componentes son bastante esenciales en todas las aplicaciones de bases de datos, por lo que debería ser una solicitud bastante común.

También como una nota, no creo que el TGrid admita Drag & ¿Gota de filas?

He mirado Firemonkey version of VirtualTreeView y Firemonkey and large amounts of data

+0

Artis puede ser que estoy un poco tarde con esto. Soy nuevo en el mono de fuego del embarcadero y tengo un montón de preguntas con respecto a FMX Grid. ¿Podría publicar su código para diseñar el Tcolumn? Gracias John –

+0

Hola, voy a publicar un código cuando regrese a la computadora. Debo decir que la solución no fue tan elegante al final. Probablemente iría por el nuevo componente de mesa de TMS. Mi solución tenía errores y no era fácil de mantener. –

Respuesta

6

Si nos fijamos en las fuentes, TCheckColumn está a sólo 15 líneas de código. Si necesita crear su propia clase descendiente de columna, es bastante sencillo. Esta es una solución, de lo contrario, puedes crear dinámicamente algunos componentes en tus celdas y luego echar a los niños cuando revisen los accesorios (TColumn.CellControlByRow() devuelve un TControl y los hijos serían lo que pusiste ahí).

Como quiera 'estilizar' su fila, le sugiero que escriba su propia clase TColumn, incluso si puede pintar en el evento OnPaint.

+0

Hola gracias por tu respuesta. Crear mi propia columna parece hacer el truco. Por supuesto que no se mostrará en el editor de columnas, pero puedo agregarlo usando tGrid.AddObject Ahora que tengo el control de la columna y las celdas, parece más fácil hacer el resto. –

+2

Si alguien está interesado; He resuelto el diseño de las celdas al anular el procedimiento UpdateColumn de TColumn. En esto agregué una función, similar a GetValue, GetCellStyleLookup, esto se publica en la cuadrícula al igual que GetValue. Así que ahora puedo aplicar un Estilo (Creado con el Editor de Estilo) a cualquier Célula basada en el contenido virtual. No tengo idea de si esta es la forma mejor/prevista de hacerlo, pero funciona. y dada una documentación tan escasa, no tengo tiempo para descubrir otra cosa. –

Cuestiones relacionadas