Stop, der Kopf ist zu wenig. Da gibts noch lästige Hürden. Hier ist das wichtige (aus OnDrawCell !) :
Delphi-Quellcode:
if ACol
in CheckBoxCols
then begin
if StrToInt (sg.Cells [ACol,ARow]) = 1
then begin
DrawRect:=Rect;
InflateRect(DrawRect,-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 liegende 0/1 nicht anz.
DrawFrameControl(sgNr.Canvas.Handle,DrawRect,DFC_BUTTON,DrawState);
end
else begin // unchecked : Checkbox ausblenden
DrawRect:=Rect;
InflateRect(DrawRect,-1,-1);
Canvas.FillRect(DrawRect);
// unchecked-0 überdecken
// canvas.TextOut(rect.Left,rect.bottom-canvas.Textheight('X')-1,' ');
end;
end
Damit dürfte das jetzt aber hinzukriegen sein. CheckBoxCols ist dabei ein eigenes SET OF byte um entscheiden zu können, um welche Spalten es geht (habe da einige). Und Achtung : das Beispiel zeigt so nur gecheckte Boxen an ! Außerdem muß noch das OnMouseClick ausgewertet werden, damit die DheckBox wie erwartet funktioniert.