Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Check boxes, casillas de verificación, en rejillas de datos, DBGrid - Delphi
Lenguaje de programación Borland Delphi

Os explicamos como mostrar en una columna de un un grid (DBGrid) de Delphi un check el valor de ésta.


Como es sabido, el DBGrid de Delphi 6 no permite por si solo mostrar casillas de verificación (checkbox) para los campos booleanos, sólo admite cambiarles el valor. Por ejemplo, permite mostrar si es True el valor del campo booleano un "Sí" ó un "No" si es False (en la propiedad del campo del componente TTable DisplayValues, poniendo como valor de esta propiedad "Sí;No").

Pero ¿hay alguna forma de mostrar un check o algún otro componente que se le parezca? Es posible utilizando la función del API de Windows DrawFrameControl.

Para poder mostrar una casilla de verificación la columna del DBGrid y el propio DBGrid deben cumplir una serie de requisitos:
* El DBGrid debe tener la propiedad ReadOnly a True.
* El DBGrid debe tener la propiedad Options - dgEditing a False.
* El Field (campo) del DBGrid debe tener la propiedad FieldName distinta de cualquier nombre de campo de la tabla, incluido el propio nombre del campo a cambiar. Por ejemplo, si el campo se llama en la tabla "cobrado", le podríamos poner como FieldName "cobrado_check".

Por último añadiremos el código fuente en el formulario Delphi necesario para que aparezca el check en el campo del grid. Utilizaremos el evento OnDrawColumnCell del DBGrid de Delphi:

procedure TFormFacturas.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);
end;
Donde:
* "Cobrado": es el nombre de un campo booleano de la tabla "Facturas" que queremos mostrar con check.

¿Cómo funciona este procedimiento? busca una columna en el DBGrid con el nombre especificado, cuando la encuentra comprueba el valor del campo booleano, si es True mostrará una casilla de verificación chequeado y si no mostrará una casilla de verificación sin chequear, utilizando la función del API de Windows "DrawFrameControl".


Revisado por AjpdSoft el 04-03-2008.



AjpdSoft, todos los derechos reservados.

Publicado el: 2003-09-11

Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A