procedure Tfrm.sgDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
const IsChecked :
array[Boolean]
of Integer =
(DFCS_BUTTONCHECK, DFCS_BUTTONCHECK
or DFCS_CHECKED);
var DrawState: Integer;
begin
inherited;
if ACol
in CheckBoxCols
then begin
if StrToInt (sg.Cells [ACol,ARow])
in [0,1,2]
then begin
InflateRect(Rect,-1,-1);
DrawState := ISChecked[StrToInt (sg.Cells [ACol,ARow]) = 1];
// ^ die 0/1, die aus dem DB-Original in sg steht, beeinflusst, ob die
// CheckBox gecheckt ist ! D.h. sie wird im OnDrawCell je nach Wert gezeichnet !
sg.Canvas.FillRect(Rect);
// hinter Cells lieg. 0/1/2 = nicht anz.
DrawFrameControl(sg.Canvas.Handle,Rect,DFC_BUTTON,DrawState);
end
end
end;
procedure Tfrm.sgClick(Sender: TObject);
begin
inherited;
if sg.Col
in CheckBoxCols
then begin
if sg.Cells [sg.Col,sg.Row] = '
0'
then
sg.Cells [sg.Col,sg.Row] := '
1'
else if sg.Cells [sg.Col,sg.Row] = '
1'
then
sg.Cells [sg.Col,sg.Row] := '
0';
end;
end;