Easiest would be to create a new component with the TStringGrid as base (and inherit from there).
Easy, but well thought off?
You expose all the properties and methods from TStringGrid like InsertRow() etc.
You don't want that.
Take a look at TValueListEditor to see what kind of mess that creates.
I would create a TTicTacToe component that just encapsulates the internal logic.
It could for example have a playing field, of which you can set each field to Knot, Cross, Empty.
It could have a DrawField method, whic in the base class I would make just empty.
Derived classes then can implement how the playing field is drawn: simply on the console or some fancy GUI.
This way, the UI in essence has nothing to do with the TTicTacToe class.
Bart