API version 1
- ‐
KeyDown¶
キーボードのキーの押下で発生します。
イベントハンドラの戻り値としてtrueを返すと以降の処理は行われません。
KeyDownイベントは、Biz/Browserの画面内でキーボードフォーカスがどのオブジェクトにあたっているかで、発生するキー操作の種類や、イベントの送信元となるオブジェクトが決まります。
KeyDownイベントのEventオブジェクトは以下の構造を持ちます。
型 | 名前 | 説明 |
---|---|---|
string | key | キー名。文字入力キーの場合は入力される文字が入ります(アルファベットは大文字固定)。特殊キーは下表を参照してください。 |
boolean | shiftKey | Shiftキーが押されている場合はtrue、それ以外はfalse |
boolean | ctrlKey | Ctrlキーが押されている場合はtrue、それ以外はfalse |
boolean | altKey | Altキーが押されている場合はtrue、それ以外はfalse |
keyプロパティに格納される値(特殊キー)
キーの種類 | 格納される値 |
---|---|
Esc | "ESCAPE" |
Tab | "TAB" |
BackSpace | "BACK" |
Return | "RETURN" |
Enter | "ENTER" |
Insert | "INSERT" |
Delete | "DELETE" |
Pause | "PAUSE" |
Home | "HOME" |
End | "END" |
← | "LEFT" |
↑ | "UP" |
→ | "RIGHT" |
↓ | "DOWN" |
PageUp | "PRIOR" |
PageDown | "NEXT" |
Shift | "SHIFT" |
Control | "CONTROL" |
Windowsキー | "LWIN" |
Alt | "ALT" |
CapsLock | "CAPITAL" |
NumLock | "NUMLOCK" |
ScrollLock | "SCROLL" |
F1~F12 | "F1"~"F12" |
メニューキー | "MENU" |
Space | "SPACE" |
キー操作における優先順序
ひとつのキー操作に対して複数の意味が割り当てられている状態で、実際にそのキー操作を行った場合、実行の優先順序は以下のようになっています。
- KeyDownイベントが発生します。
- イベントハンドラでtrueを返した場合、処理は終了します。
- Tabキー、Shift+Tabキー、またはnextTabKeyプロパティ、prevTabKeyプロパティに設定されているキー操作は、優先的にフォーカス移動が実行されます。
- Button系オブジェクトのaltKeyプロパティに割り当てられているキー操作が実行されます。
- オブジェクト固有のキー操作が実行されます。
※ 1回のキー操作で起こる動作は、フォーカス移動、altKeyプロパティの動作、オブジェクト固有操作のいずれか1つです。
KeyDownイベント利用時の注意点
- 文字入力で使用される特殊キー(漢字、無変換、BackSpaceなど)はIMEの種類やオブジェクトの状態の影響を強く受けるため、KeyDownイベントでは使用しないことを推奨します。
- システムキー(システムメニュー Alt+Spaceやウィンドウ切り替え Alt+Tabなど)と同じキーを使用すると、操作性の混乱を招きますので使用しないことを推奨します。
- PrintScreenやPauseなど、キーに固有の意味のあるキーは、操作に混乱を招きますので使用しないことを推奨します。
- KeyDownイベントは、Windowsが認識したキー操作に対して発生します。Windowsのキー操作の認識は、キーボードのハードウェアの影響を受けます。例えば、NumLockキーとScrollLockキーを1個のボタンで兼用してShiftキーで選択している機種もあります。こうしたキーボードでは、Shift+ScrollLockは、発生しません。
- Pause、NumLockなどの特殊キーでは、機種によっては、Ctrl、Shift、Altキーと同時に押下したとき、別のキーとして認識されることがあります。これらの特殊キーを利用する場合、実際に使用するキーボードで、KeyDownイベントが正しく発生することを必ず確認してください。
使用例
function onKeyDown(e) {
if (e.ctrlKey == true && e.key == "G") {
/* Ctrl+Gを押したときForm2に画面を切り替えます */
//.Form1.delete();
//.get("Form2.crs");
}
}
使用例
CRSダウンロード
Form DisplayObj_eve {
x = 0;
y = 0;
width = 800;
height = 600;
/* Form1上で操作します */
Form Form1 {
x = 15;
y = 15;
width = 600;
height = 300;
function onMouseEnter(e) {
bgColor = "#CCFFCC" ;
}
function onMouseLeave(e) {
bgColor = "#ffffff" ;
}
}
EditBox chkScroll {
x = 15;
y = 390;
width = 192;
height = 82;
value = "スクロールバーの白部分をクリックして挙動を確認" ;
/* contextMenu = false ; */
Function OnScrolled( e ) {
//.MessageBox( "スクロール発生 " );
}
}
CheckBox chkGesture {
x = 15;
y = 325;
width = 192;
height = 62;
UseChange = true;
CheckItem item[2] {
height = 25;
Width = 170;
Function OnTouch( e ) {
try {
^.^.Form1.UseMouseMove = chkGesture.item[0].Selected ? DisplayObject.MOVE_ANYTIME : DisplayObject.MOVE_STD;
^.^.Form1.UseMouseWheel = chkGesture.item[1].Selected ? Form.WHEEL_ANYTIME : Form.WHEEL_STD;
} catch( e ) {
//.MessageBox( e.message );
}
}
}
item[0].Title = "UseMouseMove=ANYTIME";
item[1].Title = "UseMouseWheel=ANYTIME";
}
EditBox edEvent {
x = 210;
y = 325;
width = 405;
height = 196;
}
Button Button1 {
x = 119;
y = 491;
width = 88;
height = 32;
Title = "クリア";
Function OnTouch( e ) {
^.edEvent.Clear();
}
}
/*マウス関係のイベントが多く記述されています。必要なものを選んで確認ください */
Function OnDoubleClicked( e ) {
edEvent = String.format( "[%1] DoubleClicked xpos=%2 ypos=%3\r\n", e.from.name, e.xPos, e.yPos ) + edEvent;
}
Function OnRClicked( e ) {
edEvent = String.format( "[%1] RClicked xpos=%2 ypos=%3\r\n", e.from.name, e.xPos, e.yPos ) + edEvent;
}
Function OnMouseWheel( e ) {
edEvent = String.format( "[%1] MouseWheel xpos=%2 ypos=%3\r\n", e.from.name, e.xPos, e.yPos ) + edEvent;
}
Function OnClicked( e ) {
edEvent = String.format( "[%1] Clicked xpos=%2 ypos=%3\n", e.from.name, e.xPos, e.yPos ) + edEvent;
}
Function OnMouseMove( e ) {
edEvent = String.format( "[%1] MouseMove xpos=%2 ypos=%3\n", e.from.name, e.xPos, e.yPos ) + edEvent;
}
Function OnContextMenu( e ) {
edEvent = String.format( "[%1] ContextMenu xpos=%2 ypos=%3\r\n", e.from.name, e.xPos, e.yPos ) + edEvent;
}
Function OnLButtonUp( e ) {
edEvent = String.format( "[%1] LButtonUp xpos=%2 ypos=%3\r\n", e.from.name, e.xPos, e.yPos ) + edEvent;
}
Function OnRButtonUp( e ) {
edEvent = String.format( "[%1] RButtonUp xpos=%2 ypos=%3\r\n", e.from.name, e.xPos, e.yPos ) + edEvent;
}
Function OnKeyDown( e ) {
edEvent = String.format( "[%1] KeyDown \r\n", e.key ) + edEvent;
}
Function OnKeyUp( e ) {
edEvent = String.format( "[%1] KeyUp \r\n", e.key ) + edEvent;
}
}