Du legst einfach eine Checkbox auf das Stringgrid und denkst, das wars ?

Versuche es so hinzukriegen, das entweder 0 oder 1 im Grid steht. 0 steht hierbei für unchecked und 1 für checked. Das wird dann im OnDrawCell ausgewertet und entsprechend gezeichnet, so das man von der 0/1 gar nichts mitkriegt, sondern nur die Checkbox sieht. In Wirklich keit ist das nämlich gar keine. Du kapito ?

Suche geeignetes Codefragment. Kann aber etwas dauern...
---
Moderiert von
Narses: Beiträge zusammengefasst---
Ne, da kann man schlecht selber draufkommen. Also ungefähr sowas muss im OnDrawCell stehen :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| if ACol in CheckBoxCols then begin DrawRect:=Rect; InflateRect(DrawRect,-1,-1); DrawState := ISChecked[StrToInt (sgSender.Cells [ACol,ARow]) = 1]; sgSender.Canvas.FillRect(Rect); DrawFrameControl(sgSender.Canvas.Handle,DrawRect,DFC_BUTTON,DrawState); end |
In der Prozedur muss das hier deklariert sein :
Delphi-Quelltext
1: 2:
| const IsChecked : array[Boolean] of Integer = (DFCS_BUTTONCHECK, DFCS_BUTTONCHECK or DFCS_CHECKED); |
Der Trick ist jetzt, das DrawState zur Auswertung zu verwenden, welches wiederum aus dem Zellwert 0 oder 1 ermittelt wird. Aber auch ein X liesse sich da verwenden.