You mean:
if not (Key in ['0'..'9']) then // do your thingthis will work ONLY in a KeyPress Event.
KeyPress receives the param "var Key: Char"
KeyDown receives the param "var Key: Word"
The first one will work fine with the code above ...
KeyDown gives you the key's KEY_CODE. for instance on windows should be VK_1 or VK_NUMPAD1 and in linux i think is XK_1 or XK_NUMPAD1
Found that out the hard way so I just added a MyKey variable as a character and did a MyKey := chr(Key) to fix it

So the actual code should have been
if not (MyKey in ['0'..'9']) then ......
Didn't think to include that part.
One further question since you seem knowledgeable in the ways of win vs lin, I'm using the VK_ keywords with LCLTYPE in the uses clause in a Linux environment. Will this work across on a Windows system?? I'm writing this in Linux but will final compile on a Windows box and have tried small bits of the code and had it work but I wanted to make sure I shouldn't be doing it differently to keep compatibility.