Ver Mensaje Individual
  #4  
Antiguo 02-09-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

De este modo tiene que funcionarte:
Código PHP:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  
TDBCheckBox *CB static_cast<TDBCheckBox*>(DBCheckBox1);
  
CB->Caption    "";
  
CB->ValueChecked 1;
  
CB->ValueUnchecked 0;
  
CB->DataSource DataSource1;
  
CB->DataField  "SELECCION";
  
CB->Visible    false;
}


void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender,
      const 
TRect &Rectint DataColTColumn *ColumnTGridDrawState State)
{
  const 
int IsChecked[2] = {DFCS_BUTTONCHECKDFCS_BUTTONCHECK DFCS_CHECKED};

  
TDBGrid *GR static_cast<TDBGrid*>(Sender);
  
TDBCheckBox *CB static_cast<TDBCheckBox*>(DBCheckBox1);
  
TRect DrawRect;

  if (
Column->Field->FieldName == CB->DataField) {
    if (
State.Contains(gdFocused) ) {
      
CB->Left    GR->Left Rect.left 2;
      
CB->Top     GR->Top  Rect.top 2;
      
CB->Width   Rect.Right Rect.Left;
      
CB->Height  Rect.Bottom Rect.Top;
      
CB->Visible true;
    }  else {
      
DrawRect Rect;
      
InflateRect(&DrawRect, -1, -1);
      
GR->Canvas->FillRect(Rect);
      
DrawFrameControl(GR->Canvas->Handle, &DrawRectDFC_BUTTON,
        
IsChecked[Column->Field->AsInteger]);
    }
  }
}

void __fastcall TForm1::DBGrid1ColExit(TObject *Sender)
{
  
TDBGrid *GR static_cast<TDBGrid*>(Sender);
  
DBCheckBox1->Visible GR->SelectedField->FieldName == DBCheckBox1->DataField;

(fijate que usé un TDBCheckBox en lugar de un TCheckBox)

Y en la definición de la tabla agregaría:
Código SQL [-]
CREATE TABLE TABLA (
  ...,
  SELECCION   SMALLINT DEFAULT 0 CHECK(SELECCION IN (0,1)),
  ...
);

Y, como lógicamente te indica Casimiro, tu DataSet tiene que tener la capacidad de actualizar la tabla.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 02-09-2016 a las 20:39:51. Razón: cambiar nombre de tabla
Responder Con Cita