PDA

Ver la Versión Completa : probkema: checkbox en stringgrid


gironella
20-12-2007, 10:36:35
Hola,

estoy intentando poner un checkbox en una celda de un TStringGrid en C++ Builder i tengo un problema:
No me deja clicarlo, i.e, cuando apreto encima suyo no se pone en ok.


TCheckBox *check4= new TCheckBox(this);
check4->Parent= grid;
check4->Visible= true;
check4->OnClick = test;
check4->Height = 14;

void __fastcall TfrmplgSimulation::test(TObject *Sender)
{
ShowMessage("ok");
}

void __fastcall TfrmplgSimulation::gridDrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State)
{

if (ACol==2 && ARow==3)
{
grid->Canvas->Brush->Color= grid->Color;
grid->Canvas->FillRect(Rect);
dynamic_cast<TCheckBox*>(grid->Objects[ACol][ARow])->Top=Rect.Top+4;
dynamic_cast<TCheckBox*>(grid->Objects[ACol][ARow])->Left = Rect.Left +12.5;
}
}


Esto es lo que tengo escrito. Si alguien me pudiera ayudar le estaria muy agradecido, porque me estoy volviendo locoooo.

Muchas gracias

gironella
20-12-2007, 11:42:43
ei, ya lo lo he apañado:
lo pongo por si a alguien le sirve;

el problema era que que associaba el checkbox al grid i por eso no respondia a los clicks.

Lo que he echo es poner check4->Parent=this;
i entonces, para situarlo en la celda añadirle la posicion de la tabla:
dynamic_cast<TCheckBox*>(grid->Objects[ACol][ARow])->Top = Rect.Top + 4 + grid->Top;
dynamic_cast<TCheckBox*>(grid->Objects[ACol][ARow])->Left = Rect.Left + 12.5 + grid->Left;

Si a alguien se le ocurre como hacerlo con el checkbox asociado al grid, bienvenido será el saber.

Hasta pronto