プログラム・テクニック

 
コーディング 

最近好んで使っているプログラミングのテクニック。

プログラム起動時にいくつかの場合分けをしたいことがあります。例えば普通に起動すれば Aというフォルダを対象にし、Shiftキーを押しながら起動したら Bというフォルダを対象にする等々。

起動中に今現在押されているキーが取得できればいいので、フォームのクリエイト時に以下のようなコードで判定します。

1
2
3
4
5
6
7
8
9
10
11
12
13
  n := 0;
  if GetKeyState(VK_CONTROL) < 0  then n := n + 1;
  if GetKeyState(VK_SHIFT) < 0    then n := n + 2;
  if GetKeyState(VK_LWIN) < 0     then n := n + 4;
 
  if n = 0 then Memo1.Text := '';
  if n = 1 then Memo1.Text := 'Ctrl';
  if n = 2 then Memo1.Text := 'Shfit';
  if n = 3 then Memo1.Text := 'Shift + Ctrl';
  if n = 4 then Memo1.Text := 'LWIN';
  if n = 5 then Memo1.Text := 'Ctrl + LWIN';
  if n = 6 then Memo1.Text := 'Shift + LWIN';
  if n = 7 then Memo1.Text := 'Ctrl + Shift + LWIN';

上記は [Ctrl] [Shift] [左WIN] キーが押されているかどうかを判断し、押されたキーの分 n へ足し算します。
※ 3キー同時押しまで判定している

すると 0 – 7 までの値が取れるので、8通りの処理に分けることが出来るようになります。覚えておくと必ず重宝する機会が訪れますよ。