Hallo,
der Vom TE eingeschlagene Weg
CHB_OK.Parent := StringGrid1;
kann nicht funktionieren.
Annahme: Es ist eine Zelle selektiert, so dass die Checkbox im Grid angezeigt wird. Was passiert, wenn man mit der Maus auf die Checkbox klickt?
Die WM_LBUTTONDOWN Message wird in TButtonControl.WndProc eigentlich nur über TWinControl.WndProc an TControl.WndProc weitergereicht, um dann über TObject.Dispatch in TControl.WMLButtonDown zu landen. Soweit passt eigentlich noch alles. Wenn jetzt die Kinder mit den Eltern sprechen: Die von der Checkbox abgesetzte WM_COMMAND Message landet jetzt aber (bei Mama und Papa) in der TCustomGrid.WMCommand und dort wird eben nur der InplaceEditor (falls existent), nicht aber die Checkbox behandelt.
Die WM_COMMAND Message würde von der Checkbox über TCustomCheckBox.CNCommand verarbeitet werden; kommt dort nur nicht mehr an.
Wer also das Standardverhalten einer Checkbox erhalten möchte, suche sich bessere Eltern.
Kompletter Unsinn ist übrigens mein Vorschlag (also ganz schnell vergessen)
CHB_OK.CreateParentedControl (StringGrid1.Handle);
Außer eine Instanz einer TWinControl anzulegen tut es nix. Lieber TE sollte Du diesen Vorschlag übernommen haben (wenn es funktioniert, dann nur weil die CHB_OK.Parent Zuweisung fehlt und die Checkbox auf einem Form, einem Panel o. ä. liegt), es tut mir leid zu schnell aus der Hüfte geschossen zu haben.
@Bummi:
Zitat:
Mich interessiert immer noch warum das beschriebene Verhalten auftritt
Danke! Das habe ich gebraucht. Sonst hätte ich wohl über meinen Post nicht mehr nachgedacht und mich mit (m)einer unsinnigen Lösung zufrieden gegeben.
Gruß