ショートカットをフォームに割り付ける
| 日付 | 2009/09/03 |
|---|---|
| ID | 09-060 |
| バージョン | 11, 2004, 2003 |
| プラットフォーム | Win & Mac |
ショートカットキーは、メニューやボタンに割り付けることができます。ですからフォーム特有の特有のショートカット、例えばタグやリストボックスに対する振る舞いをショートカットで行うようにする為には、メニューやボタンを用意するしか方法はありません。
もしメニューを作らずボタンを配置しなければ、ショートカットを作ることはできません。しかし、メニューやボタンが存在しないように見せかけることは、可能です。
このようは隠しボタンを作成するポイントは、ショートカットを割り付けたボタンを表示範囲の外側に配置することです。そしてボタンにフォーカスが当たらないように、ボタンプロパティの「フォーカス表示」忘れずに外しておきます。これでボタンが表示されること無く、ショートカットキーが押された時には、そのボタンが働くようになります。
例えば下の図のようにフォームをデザインします。

このフォームは、フォームサイズの「サイズを決めるもの」プロパティをデフォルトの「自動サイズ」から「ButtonClose」に変更してあります。実際のフォームプロパティは次のようになっています。

ButtonCloseオブジェクトは、このフォーム右下に配置した「閉じる」ボタンです。この閉じるボタンがフォームの下側と右側の位置を決定するので、このフォームの場合には「↑」ボタンが表示されることはありません。
この「↑」ボタンにはショートカットキーとして「↑」を割り付けているので、↑キーを押した時にはボタンメソッドが動作するようになります。例えばこの例の場合、リストボックスを例えば数行づつスクロールするようなメソッドを記述しておけば、オペレータの利便性を図ることができます。このボタンのプロパティは下記のようになっています。特に赤で囲まれたところに注目してください。

注意点
割り付けられたショートカットキーはフォームに渡されなくなります。そのキーは入力できない文字となりますので、入力を妨げることにもなりかねません。十分に注意してデザインしてください。
おまけ
複数行づつスクロールしながら選択位置が変わるメソッド例です。この例は、3行づつ下方向にスクロールするものです。
C_LONGINT($pos)
$pos:=Find in array(ListBoxx;True)
If ($pos>0) & ($pos<(Size of array(ListBoxx)-2))
ListBoxx{$pos}:=False
$pos:=$pos+3
SCROLL LINES(*;"List Box";$pos)
ListBoxx{$pos}:=True
End if