Ver Mensaje Individual
  #8  
Antiguo 31-03-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Reputación: 25
__cadetill Va por buen camino
Cita:
Empezado por Nuria
No creo que pueda hacer lo de los Check con la modificación que me dijiste antes porque el campo Boolean NO es un campo de la tabla propiamente dicho, sino un campo calculado que me he creado yo. Ya veré como lo hago finalmente.
Bueno, supongo que será un entero con valores 1 o 0, no?
Si es así, prueba a poner....

Código:
     if Column.Field.DataType = ftInteger then
      begin
           // Pintamos solo la celda booleana
           if Column.Field.AsBoolean and (Pintar.ItemIndex = 1) then
            begin
                 RxDBGrid1.Canvas.Brush.Color := clInfobk;
                 RxDBGrid1.Canvas.Font.Style  := [fsBold];
                 RxDBGrid1.Canvas.Font.Color  := ClBlack;
                 RxDBGrid1.DefaultDrawColumnCell(Rect,Datacol,Column,State);
            end;

           RxDBGrid1.Canvas.FillRect(Rect);
           CheckBoxRectangle.Left   := Rect.Left + 2;
           CheckBoxRectangle.Right  := Rect.Right - 2;
           CheckBoxRectangle.Top    := Rect.Top + 2;
           CheckBoxRectangle.Bottom := Rect.Bottom - 2;
           DrawFrameControl(RxDBGrid1.Canvas.Handle, CheckBoxRectangle,
              DFC_BUTTON, CtrlState[Column.Field.AsInteger = 1]);
      end;
En negrita las lineas que cambian. De esta manera te evitas el campo calculado. Luego, en el OnClick, sólo has de actualizar susodicho campo.

Atención: esta manera tiene un problema, y es que afectará a todos los campos de tipo Integer.
Solución: en lugar de mirar el tipo de campo, mirar por el nombre de campo
ej: if Column.Field.FieldName = 'MiCampoInteger' then

Espero te sirva
Responder Con Cita