If you use the arrow key to enter a cell, then dismiss the inplace edit by pressing escape. Then type a letter on the keyboard when the edit is shown, it has the key pressed typed into the edit control.
Here's an example.
procedure TFormCheckListDlg.CompletedItemsInplaceEditInsert(Sender: TObject; ACol, ARow: Integer; Component: TComponent); begin inherited; if (ACol = 2) then begin Comment.ReadOnly := True; end; end;
The default for the Inplace edit is ReadOnly but it doesn't stop the edit from entering text into it.
I worked around it by trapping the grid on KeyDown and aborting if the InplaceEdit was set to ReadOnly.