Gentlefolk,
Once again thanks for the comments and direction.
As suggested the answer is in the difference in the two event handlers:
procedure StringGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure StringGrid1KeyPress(Sender: TObject; var Key: char);
One presents a 'key' and the state of the shift key and the other a 'char' which is the result of keyboard handling code....
I need to think more before leaping to conclusions.... Ian