FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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 |
#2
|
|||
|
|||
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. |
|
|
|