PDA

Ver la Versión Completa : Dbgrid Unir Celdas


nikata
22-10-2007, 10:08:37
Hola a todos

Tengo un problema, estoy haciendo un calendario para hacer un tipo de ocupacion, lo tengo hecho con un dbgrid, pero necesito escribir en varios dias juntos escribir un texto, por ejemplo del 1 al 4 "Pepito".

He consiguido pintar las celdas, pero no escribir.
en el evento DBGrid1DrawColumnCell tengo puesto lo siguiente:
dbgrid1.Canvas.Textout(rect.Left+ Font.Size,rect.Top,'Pepito');
solo me escribe en la primera celda. 'Pep'

Salu2
http://www.clubdelphi.com/foros/images/misc/progress.gif

basti
22-10-2007, 11:52:37
Prueba con


dbgrid1.Canvas.TextOut(rect.left + 1, rect.Top + Canvas.TextHeight('Pepito') + 1, 'Pepito');


Al left sólo tienes que sumarle 1 para separarlo de la izquierda. Al Top tienes que sumarle la altura del texto para que lo baje. Después de hacer esto no llames a DefaultDrawColumnCell, sino, pintará por encima el grid.

nikata
22-10-2007, 15:41:25
Primero necesito asignarle el color de los dias seleccionados y luego escribir el nombre, he probado lo que me has dicho, ya funciona pero a la que pongo el color no sale.
lo tengo todo puesto en el evento DBGrid2DrawColumnCell,

Gracias por tu respuesta,
Saludos

Lepe
22-10-2007, 15:43:38
Creo que el DBGrid no va a servir para tu propósito.

Usas el evento DBGrid1DrawColumnCell, y como su propio nombre indica, es una única celda, por mucho que quieras agrandar el TRect, éste se tapará por las celdas adyacentes.

Podrías escribir en una celda 'Pep' en la otra de la derecha 'ito' pero de todas formas, al hacer un clic sobre una celda, sólo se pondría en azul una de las celdas.

Busca un poco por torry's.net, seguro que hay un Calendar, Schedule o Planning que pueda servirte.

la JVCL tiene un TTimeLine en la que puedes añadir comentarios que ocupen varios días, pero no es un componente DBAware.

Saludos

nikata
22-10-2007, 17:23:53
Si solo me falta escribir el texto, pues los colores ya los tengo puestos y funciona con el dbgrid, si que es verdad que es bastante lento de mostrar y cuando se mueve que tiene que recalcular, ¿pero podria dibujar encima de las celdas un panel con el texto dentro? ¿como?
Gracias
Salu2