15番会議室「FAQ編纂委員会」に寄せられた「よくある質問の答え」
[Q]
次のようなコードをコンパイルすると VK_N の部分が、「未定義の識別子
です」といって怒られます。なぜですか?VK_F10等はすんなり通ります。
OnKeyDown イベントのなかで
if Key = VK_N then begin
{Nキーが押された時の処理}
end;
[A]
Gen.Y.Sakai さん が「送られてくるKeyをcharにキャストする」方法を紹介
されていますが、逆に「Char を Key にキャストしてしまう」方法もありま
す。
ord() という関数を使います。これだと、case 文で VK_F10 などと並べて記
述できるようになります。
OnKeyDown イベントのなかで
if Key = ord('N') then begin
{Nキーが押された時の処理}
end;
または
case Key of
ord('N'): { N キーが押された時の処理}
VK_F10: {F10 キーが押された時の処理}
end; { case }
* 通常の関数(たとえば StrToInt)は実行時に評価されるので、Case の
条件には使えません。しかし Ord は特殊なので、 コンパイル時に定数に
評価されるので、使えます。
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum FDELPHIに寄せられる質問の中から、よくある質問への回答を FDELPHIのメンバーがまとめたものです。 したがって、これらの回答はボーランド株式会社がサポートする公式のものではなく、掲示されている内容についての問い合わせは受けられない場合があります。
Copyright 1996-1998 Delphi Users' ForumFAQ編纂委員会
|