FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Mostrar check en dbGrid
Hola a tod@s.
Mi duda es la siguiente, trabajo con interbase 6 y resulta que no tiene un campo boolean, así que yo he creado un campo char(2) así grabo (si/no) según interese. Resulta que cuando tengo una tabla que sólo tiene un campo (si/no) me funciona correctamente, pero cuando tiene varios sólo me muestra el último, os remito el código para ver donde me equivoco, lo coloco en el evento onDrawColumnCell. procedure TFConModEliSeries.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var Check: Integer; begin { Compruebo antes si la tabla está vacía. } if not Tabla.IsEmpty then begin { Campo 1. } if CompareText(Column.FieldName, 'CAMPO1') = 0 then begin Check := 0; if Tabla['CAMPO1'] = 'Si' then Check := DFCS_CHECKED; dbGrid1.Canvas.FillRect(Rect); DrawFrameControl(dbGrid1.Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONCHECK or Check); end else dbgrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State); { Campo 2. } if CompareText(Column.FieldName, 'CAMPO2') = 0 then begin Check := 0; if Tabla['CAMPO2'] = 'Si' then Check := DFCS_CHECKED; dbGrid1.Canvas.FillRect(Rect); DrawFrameControl(dbGrid1.Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONCHECK or Check); end else dbgrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State); { Campo 3. } if CompareText(Column.FieldName, 'CAMPO3') = 0 then begin Check := 0; if Tabla['CAMPO3'] = 'Si' then Check := DFCS_CHECKED; dbGrid1.Canvas.FillRect(Rect); DrawFrameControl(dbGrid1.Canvas.Handle, Rect, DFC_BUTTON, DFCS_BUTTONCHECK or Check); end else dbgrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State); end; end; Esperando una pronta respuesta por vuestra parte, reciban un cordial saludo... Gracias de antemano. |
|
|
|