Ver Mensaje Individual
  #1  
Antiguo 26-04-2004
Aprendiendo Aprendiendo is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 122
Reputación: 22
Aprendiendo Va por buen camino
Question 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.
Responder Con Cita