In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Dibujar Titulo de una columna

Foro público de Xailer en español
Claudio[1]
Mensajes: 59
Registrado: Vie May 01, 2009 5:40 am

Dibujar Titulo de una columna

Mensaje por Claudio[1] »

Estimados:
Tengo la necesidad de dibujar en el tí­tulo de una columna de un arraybrowse.
Estoy implementando un diagrama GANTT. En las 'celdas' de la columna lo
logre sin problemas ( aunque con mucho trabajo )
El inconveniente es cómo dibujar en el tí­tulo de la columna.
Mis intentos hasta ahora fueron:
1) Realizar el dibujo sobre un tpanel que se ubica en el lugar del
encabezado de la columna. Con esto el Tpanel dibujado 'parece' el header
de la columna. ( inhabilite el header en el arraybrowse )
Esto en principio 'funciona' pero el problema es que se requiere
utilizar los filtros del header en la aplicacion ( de manera similar a
los autofiltros de excel ).
Por la necesidad del filtro se descarta esta primera opción.
2) Habilité el header del arraybrowse y trate de interceptar el método
que dibuja el encabezado de la columna.
THeaderItem no tiene un método para dibujar WMPaint() ( o equivalente )
Al menos que yo conozca.
Si pude 'sobrecargar' WMPaint() en la clase THeader. Este metodo dibuja
'todo' el encabezado ( todos los encabezados de todas las columnas).
//----------------------------------------------------
METHOD WMPaint() CLASS THeader
LOCAL ps, hDC
hDC := BeginPaint( ::Handle, @ps )
::oBrush:nColor := ::nClrPane
FillRect( hDC, { 0, 0, ::nWidth, ::nHeight }, ::oBrush:Handle )
::oBrush:nColor := CLR_RED
FillRect( hDC, { 0, 0, ::nWidth/2, ::nHeight/2 }, ::oBrush:Handle )
EndPaint( ::Handle, ps )
RETURN 0
Con esto logro dibujar en el encabezado ( en esta prueba un rectangulo
rojo). Se presentan dos problemas.
Problema a) Hay que dibujar todos los encabezados ( no solo el de la
columna que necesito) De todas maneras esto podrí­a salvarse dibujando el
resto de los encabezados con texto.
Problema b) No aparecen los campos de autofiltro con lo cual estoy en un
punto similar al 1) ( en realidad están y funcionan pero no seven, hay
que imaginarlos)
El ultimo intento fue, antes de hacer 'mi' grafico, llamar
::super:WMPaint() para que dibuje todos los encabezados del header y
luego hacer mi grafico: no funciono ( Mi grafico NO se ve )
En resumen: no encuentro la forma de poder dibujar sobre el encabezado
de 'una' columna y mantener los campos de filtro en un arraybrowse.
Espero se entienda el problema y aguardo sugerencia.
De antemano gracias por su tiempo.
Claudio.
Responder