You either need to use bytebytes' solution, or set a cell editor that is a date editor (rather than a string editor) such as TDateEdit, which would prevent user entry of an invalid dates.
Trying to roll your own validation routine and ignoring the built in OnValidateEntry event will almost certainly lead to grief.
OnSelectCell is a poor choice, since it is called so frequently, and in a large grid code such as you show, even if it worked, would slow the UI.
TStringGrid has been designed with an underlying, largely hidden, internal messaging system. Without understanding that you are unlikely to get a single-threaded LCL UI to respond in the way you hope it will by interrupting the grid cell selection mechanism.