para mostrar las celdas del grid que sean booleanas con un checkbox en vez de un texto (Sí/No).
Pero con este código no consigo ponerlas cuando son varias columnas (campos) en el mismo DBGrid, sólo me aparece una correctamente (la última):
Código:
procedure TFormContabilidad.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
chequeado : Integer;
begin
if Column.FieldName = 'Cobrado_check' then
begin
DBGrid1.Canvas.FillRect(Rect);
chequeado := 0;
if md.tTablaFacturas['Cobrado'] then
chequeado := DFCS_CHECKED;
DrawFrameControl(DBGrid1.Canvas.Handle, Rect,
DFC_BUTTON, DFCS_BUTTONCHECK or Check);
end
else
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
if Column.FieldName = 'Entregado_check' then
begin
DBGrid1.Canvas.FillRect(Rect);
chequeado := 0;
if md.tTablaFacturas['Entregado'] then
chequeado := DFCS_CHECKED;
DrawFrameControl(DBGrid1.Canvas.Handle, Rect,
DFC_BUTTON, DFCS_BUTTONCHECK or Check);
end
else
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
En este caso sólo me muestra el checkbox en la última columna (Entregado).
¿qué puedo estar haciendo mal?
Ultima edición por varios el Mar Mar 04, 2008 9:11 pm, editado 1 vez
Publicado:
Mar Mar 04, 2008 9:09 pm
varios Magnífico usuario
Registrado: Oct 10, 2006 Mensajes: 2092
Asunto: Re: Varios check en varias columnas del mismo DBGrid - Delph
Anuncios
Otra cuestión, con el código anterior los checkbox me aparecen muy grandes y estéticamente no se ven bien ¿hay alguna forma de quitarles el efecto 3D o al menos reducirles el tamaño?
Publicado:
Mar Mar 04, 2008 9:10 pm
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Varios check en varias columnas del mismo DBGrid - Delph
Anuncios
Cita:
Otra cuestión, con el código anterior los checkbox me aparecen muy grandes y estéticamente no se ven bien ¿hay alguna forma de quitarles el efecto 3D o al menos reducirles el tamaño?
Efectivamente, lo hemos probado y falla, para solucionarlo y salir del paso prueba esto otro, donde también actualizamos el código para que el checkbox sea más pequeño:
Código:
procedure TFormFacturas.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
var
Check: Integer;
recuadroCheck: TRect;
recuadroCheck2: TRect;
begin
if Column.FieldName = 'Cobrado_check' then
begin
DBGrid1.Canvas.FillRect(Rect);
Check := 0;
if md.tTablaFacturas['Cobrado'] then
Check := DFCS_CHECKED;
recuadroCheck := Rect;
InflateRect(recuadroCheck, -2, -2);
DrawFrameControl(DBGrid1.Canvas.Handle, recuadroCheck,
DFC_BUTTON, DFCS_BUTTONCHECK or Check);
end
else
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
if Column.FieldName = 'Entregado_check' then
begin
DBGrid1.Canvas.FillRect(Rect);
Check := 0;
if md.tTablaFacturas['Entregado'] then
Check := DFCS_CHECKED;
recuadroCheck2 := Rect;
InflateRect(recuadroCheck2, -2, -2);
DrawFrameControl(DBGrid1.Canvas.Handle, recuadroCheck2,
DFC_BUTTON, DFCS_BUTTONCHECK or Check);
end
else
DBGrid1.DefaultDrawColumnCell(recuadroCheck2, DataCol, Column, State);
end;
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A