FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Pintar Celdillas especificas en una grilla
Hola Foro.
Nececito pintar celdillas especificas en una grilla a partir de una tabla de datos. Me refiero a gupos de celdas con distintos colores en distintas partes de la grilla. Por Ej: Un sistema para controlar reservas Hoteleras. Depto. Estado 12345678901234567890123456789 <=Dias del mes ------------------------------------------------ 101 OOORRRRRMMDDDDDDDRRR 102 RRRDDDDDDRRRRRMMMRRR .. .. 505 O= Ocupado R= Reservado M= Mantencion D= Disponible *En este pequno ejemplo. Por decir algo: - El Depto. 101, en la grilla deberia tener pintada de Azul las celdillas cullo valor en la tabla sea = 'O', deberia tener pintada de Verde las celdillas cullo valor en la tabla sea = 'R', deberia tener pintada de Rojo las celdillas cullo valor en la tabla sea = 'M', y de Amarillo las celdillas cullo valor en la tabla sea = 'D'. Lo mismo para el departamento 102, y asi con los demas. Alguien puede darme una mano con esto.??? Gracias. Saludos Jose Miguel Bakulic V. |
#2
|
|||
|
|||
Buenas...
Una forma es la siguiente: Lo primero... establece la propiedad "DefaultDrawing" del DGrid a True. Y lo segundo... en el evento "OnDrawColumnCell" incluye un código como este: If DBGrid1.DataSource.DataSet.FindField('REC').AsBoolean = True then begin DBGrid1.Canvas.Brush.Color := clGreen; end else begin DBGrid1.Canvas.Brush.Color := clRed; end; DBGrid1.Canvas.FillRect(Rect Esto comprueba el valor del campo REC y dependiendo de si es True o False colorea de celda correspondiente al campo REC en Verde o en Rojo. ¿Te resultó así claro? Saludos |
#3
|
|||
|
|||
Hola Foro.,
Sin darme cuenta al presentar mi consulta, omiti un factor muy importante. Y es que yo estoy actualmente trabajando con iconos en la primera columna de la Grilla. Y el punto es que no logro pintar celdillas si ocupo BitMap.O sea, no puedo pintar celdillas y al mismo tiempo dibujar iconos. Saben por que pasa esto. Y como solucionarlo.?????. La rutina que estoy ocupando para dibujar los BitMaps es esta: procedure TFMantencionDepto.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin { D = Disponible Limpia ==> Dibuja un Rombo Verde O = Ocupado ==> Dibuja una maleta de viajero N = No Disponible ==> Dibuja un Rombo Rojo S = Disponible Sucia ==> Dibuja un Rombo Amarillo with Sender as TDBGrid do begin if Column.FieldName <> '' then DefaultDrawColumnCell(Rect, DataCol, Column, State) else if ( Dt1.TInvUni.FieldByName( 'Estado' ).AsString = 'D' ) then Canvas.StretchDraw( Rect, RVerde.Picture.Graphic ) else if ( Dt1.TInvUni.FieldByName( 'Estado' ).AsString = 'O' ) then Canvas.StretchDraw( Rect, Maleta.Picture.Graphic ) else if ( Dt1.TInvUni.FieldByName( 'Estado' ).AsString = 'N' ) then Canvas.StretchDraw( Rect, RRojo.Picture.Graphic ) else if ( Dt1.TInvUni.FieldByName( 'Estado' ).AsString = 'S' ) then Canvas.StretchDraw( Rect, RAmar.Picture.Graphic ) else Canvas.StretchDraw( Rect, RVerde.Picture.Graphic ); end; end; Gracias. Saludos Jose Miguel Bakulic V. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|