![]() |
![]() |
![]() |
![]() |
![]() |
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
|
|||
|
|||
![]() 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. ![]() ![]() ![]() |
#2
|
||||
|
||||
Es difícil leer código sin indentar pero te comento que ante la falta de un campo booleano yo me iría más por usar un campo entero (1=true, 0=false) que te permite más fácil la conversión, por ejemplo, Tabla.FieldByName('campo').AsBoolean te permitirá leer o asignar el valor mediante las constantes true y false sin problemas.
// Saludos |
#3
|
|||
|
|||
![]() Igual no me explique, bien ocurre que quiero mostrar (si/no) en un dbGrid, pero que no me salga (si/no), me salga un checkbox, lo consigo sólo cuando tengo un campo como el que he especificado, cuando tengo tres como muestro en el código de arriba, sólo me muestra con un checkbox el último campo los dos anteriores los muestra como (si/no).
Gracias. ![]() ![]() ![]() |
#4
|
|||
|
|||
Pásate por mi web y bajate la demo sobre el TRxDbGrid. En ella muestro como hacerlo.
No obstante, te aconsejo que sigas la recomendación de Román y que no uses campos Char/Varchar para este propósito, sino campos numericos con un Check a 1/0 donde 0 = false y 1 = true |
#5
|
||||
|
||||
Hola me interesa ese componente TRxDbGrid, el cual menciona Cadelli ,pero cual es tu webo?
|
#6
|
||||
|
||||
Tambien podrías consultar este artículo sobre como poner un CheckBox en un DBGrid.
__________________
|
#7
|
||||
|
||||
Gracias Contraveneno, pero no engo un campo booleano en mi tabla, como haria ??
|
![]() |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
![]() |
|