>>244
>procedure CMWANTSPECIALKEY(var Msg: TMessage); message >CM_WANTSPECIALKEY;

教えてもらった方法を試してみました…

KeyDown では、カーソルキー,TABは取得できませんでした。(BSやDEL,ENTERは取得できた)

そこで、CM_WANTSPECIALKEY ではカーソルキーも取得できたので

procedure CMWANTSPECIALKEY(var Msg: TMessage);
に

var
w:word;
begin
w := Msg.WParam;
KeyDown(w,[]);

と書きましたが、カーソルキーを押した場合、なぜか2回分カウントされます。さらに、シフトの状態がわからないではありませんか(TAB 及び TAB+SHIFT等)!

とりあえず、いろいろ試してみます。