16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"RE:NumLockを制御する(修正)"
この発言は #01024 Mr.XRAY さんのNumLockを制御する に対するコメントです
先のコードですが,IDE(開発環境)で実行した場合はOKなのですが,
作成したEXEファイルを単独で実行するとNumLockがONになりませんでした.
そこで,以下の様に,コントロール(この場合Edit)に入ったらNumLockをON
にするように変更すると動作しました.
FormCreateだとダメの様です.タイミングの問題なのでしょうか.
勉強不足でわかりません.m(_ _)m
テストするには,アプリケーションの新規作成で,TEditを一つ貼付けて,
EditのOnEnter,OnKeyDownイベントに下記のコードを書きます.
次に,NumLockをOFFにして,実行してみて下さい.
動作はWindows98で確認しました.
uses にWindowsが必要です.
{====================================================================}
{ 入力位置にきたら強制的にNumLockをONにしてしまう }
{====================================================================}
procedure TForm1.Edit1Enter(Sender: TObject);
var
{キーボードの状態配列}
KeyState: TKeyboardState;
begin
{キーボードの現在状態を取得}
GetKeyboardState(KeyState);
{NumLockをONにする.0にすればOFF}
KeyState[VK_NUMLOCK]:=1;
{キーボードを新しい状態に設定}
SetKeyboardState(KeyState);
end;
{====================================================================}
{ NumLockを押してもトグルしないで常にNumLockをONにしてしまう }
{====================================================================}
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
{キーボードの状態配列}
KeyState: TKeyboardState;
begin
if Key=VK_NUMLOCK then begin
{キーボードの現在状態を取得}
GetKeyboardState(KeyState);
{NumLockをONにする.0にすればOFF}
KeyState[VK_NUMLOCK]:=1;
{キーボードを新しい状態に設定}
SetKeyboardState(KeyState);
end;
end;
山が好き,花が好き,人が好き Mr.XRAY
Original document by Mr.XRAY 氏 ID:(HGH03072)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|