Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-04-2004
Aprendiendo Aprendiendo is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 122
Poder: 21
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
  #2  
Antiguo 26-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #3  
Antiguo 28-04-2004
Aprendiendo Aprendiendo is offline
Miembro
 
Registrado: may 2003
Ubicación: España
Posts: 122
Poder: 21
Aprendiendo Va por buen camino
Lightbulb

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.
Responder Con Cita
  #4  
Antiguo 28-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 05-12-2005
Avatar de Coco_jac
Coco_jac Coco_jac is offline
Miembro
 
Registrado: mar 2005
Ubicación: Lima Peru
Posts: 338
Poder: 20
Coco_jac Va por buen camino
Hola me interesa ese componente TRxDbGrid, el cual menciona Cadelli ,pero cual es tu webo?
Responder Con Cita
  #6  
Antiguo 06-12-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Tambien podrías consultar este artículo sobre como poner un CheckBox en un DBGrid.
__________________

Responder Con Cita
  #7  
Antiguo 07-12-2005
Avatar de Coco_jac
Coco_jac Coco_jac is offline
Miembro
 
Registrado: mar 2005
Ubicación: Lima Peru
Posts: 338
Poder: 20
Coco_jac Va por buen camino
Gracias Contraveneno, pero no engo un campo booleano en mi tabla, como haria ??
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 21:52:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi