UTable .NET Framework用 表入力コンポーネント
ドキュメント

キーボードオペレーション

UTable上で、ユーザがキーボード操作を行うと、 その処理の多くはキーボードオペレーションというオブジェクトに委ねられます。

キーボードオペレーションオブジェクトは、 KeyboardOperationプロパティで設定・取得できます。

    Table.KeyboardOperation

キーボードオペレーションのプロパティで、 キーボードによる操作方法の一部をカスタマイズできます。 プロパティの一覧を以下に示します

プロパティ説明
EnterBehavior Enterキーが押された時の動作を設定・取得します
NONE:何もしません
NEXT_FIELD:次のフィールドへフォーカス移動します
NEXT_EDITABLE_FIELD:次の編集可能フィールドへフォーカス移動します
NEXT_RECORD:次のレコードへフォーカス移動します
NEXT_CONTROL:テーブルを抜け、次のコントロールへフォーカスを移します
デフォルト値はNEXT_RECORDです
TabBehavior Tabキーが押された時の動作を設定・取得します
とり得る値はEnterBehaviorと同じです
デフォルト値はNEXT_FIELDです
LeaveFromLastField 最後のフィールドから、次のフィールドへフォーカス移動が要求された時に、
テーブルを抜けて次のコントロールへフォーカス移動するかを設定・取得します
デフォルト値はTrueです
StartEditKey 編集モードを開始するキーを設定・取得します
デフォルト値はF2です
ClearByDelete Deleteキーでフィールドの値をクリアするかどうかを設定・取得します
デフォルトはTrueです
ClipboardCut Ctrl+Xで切り取りを行うかを設定・取得します
デフォルトはTrueです
ClipboardCopy Ctrl+Cでコピーを行うかを設定・取得します
デフォルトはTrueです
ClipboardPaste Ctrl+Vで貼り付けを行うかを設定・取得します
デフォルトはTrueです
Undo Ctrl+Zでアンドゥを行うかを設定・取得します
デフォルトはTrueです
Redo Ctrl+Yでリドゥを行うかを設定・取得します
デフォルトはTrueです

ClipboardCut、ClipboardCopy、ClipboardPasteプロパティを一括で設定する場合は、 ClipboardEnabledプロパティを用いると便利です。

  KeyboardOperation.ClipboardEnabled = False 'ClipboardXXXプロパティを全てFalseにする

同様に、Undo、Redoプロパティを一括で設定するには、 UndoRedoEnabledを利用してください。

  KeyboardOperation.UndoRedoEnabled = False 'Undo、RedoプロパティをFalseにする

キーボードオペレーションクラスの拡張

デフォルトのキーボードオペレーションクラス(CKeyboardOperation)を継承し、 独自の拡張を行うことができます。 継承によって作成したオペレーションクラスは、 KeyboardOperationプロパティへ代入することでテーブルから利用されるようになります。

    Table.KeyboardOperation = mykeyboardoperation

CKeyboardOperationクラスには、オーバーライド可能なメソッドがいくつかありますが、 その中でテーブルから直接呼ばれるのは、以下のメソッドになります。

メソッド説明
IsInputKey(key, table, defaultValue) 編集モードではない状態でのキー入力に対し、
KeyDownイベントを発生させるか
ProcessDialogKeyを実行するかを判断するために呼ばれます
このメソッドがTrueを返すとKeyDownイベントが発生し、
Falseを返すとProcessDialogKeyが呼ばれます
コントロールのデフォルトの動作にしたい場合は、
defaultValueを戻り値としてください
ProcessDialogKey(key, table) 編集モードではない状態でのキー入力に対する前処理を行います
このキー入力の処理が完了した場合、Trueを返してください
LeaveEdit(direction, table) 編集モードから抜ける際に呼ばれます
directionには、編集モードから抜けた後にフォーカスを移動する方法を表す文字列が渡されます

デフォルトのLeaveEditメソッドは、directionとして、次の文字列を受理します。 これ以外の文字列を受け取った場合、フォーカス移動等は行われません。

direction説明
"UP" prevRowメソッドが呼ばれます
"DOWN" nextRowメソッドが呼ばれます
"LEFT" prevColメソッドが呼ばれます
"RIGHT" nextColメソッドが呼ばれます
"ENTER" tabEnterメソッドにEnterBehaviorが渡されて呼ばれます
"ENTER_PREV" tabEnterPrevメソッドにEnterBehaviorが渡されて呼ばれます
"TAB" tabEnterメソッドにTabBehaviorが渡されて呼ばれます
"TAB_PREV" tabEnterPrevメソッドにTabBehaviorが渡されて呼ばれます

ProcessDialogKeyとLeaveEditメソッドから利用されるメソッドには、以下のものがあります。

メソッド説明
nextRow(table) 次の行へフォーカスを移動します
デフォルトでは、下カーソルキーが押されたときに呼ばれます
このメソッドはオーバーライド可能です
prevRow(table) 前の行へフォーカスを移動します
デフォルトでは、上カーソルキーが押されたときに呼ばれます
このメソッドはオーバーライド可能です
nextCol(table) 次の列へフォーカスを移動します
デフォルトでは、右カーソルキーが押されたときに呼ばれます
このメソッドはオーバーライド可能です
prevCol(table) 前の列へフォーカスを移動します
デフォルトでは、左カーソルキーが押されたときに呼ばれます
このメソッドはオーバーライド可能です
startCol(table) 先頭の列へフォーカスを移動します
デフォルトでは、HOMEキーが押されたときに呼ばれます
このメソッドはオーバーライド可能です
endCol(table) 最後の列へフォーカスを移動します
デフォルトでは、ENDキーが押されたときに呼ばれます
このメソッドはオーバーライド可能です
pageDown(table) 1ページ分下へスクロールします
デフォルトでは、PgDnキーが押されたときに呼ばれます
このメソッドはオーバーライド可能です
pageUp(table) 1ページ分上へスクロールします
デフォルトでは、PgUpキーが押されたときに呼ばれます
このメソッドはオーバーライド可能です
tabEnter(table, behavior) behaviorで渡された、次へ進む動作を行います
デフォルトでは、TabキーまたはEnterキーが押されたときに呼ばれます
このメソッドはオーバーライド可能です
tabEnterPrev(table, behavior) behaviorで渡された、前へ戻る動作を行います
デフォルトでは、Shiftキーを押しながらTabキーまたはEnterキーが押されたときに呼ばれます
このメソッドはオーバーライド可能です
doNextField(table, editableOnly) タブオーダ順で次のフィールドへフォーカスを移動します
editableOnlyにTrueを渡すと、次の編集可能なフィールドへフォーカスを移動します
このメソッドはオーバーライドできません
代わりにnextFieldメソッドをオーバーライドしてください
doPrevField(table, editableOnly) タブオーダ順で前のフィールドへフォーカスを移動します
editableOnlyにTrueを渡すと、前の編集可能なフィールドへフォーカスを移動します
このメソッドはオーバーライドできません
代わりにprevFieldメソッドをオーバーライドしてください
nextField(table, editableOnly) タブオーダ順で次のフィールドへフォーカスを移動します
このメソッドはdoNextFieldメソッドからのみ呼ばれます
他の場所からは呼ばないでください
このメソッドはオーバーライド可能です
prevField(table, editableOnly) タブオーダ順で前のフィールドへフォーカスを移動します
このメソッドはdoPrevFieldメソッドからのみ呼ばれます
他の場所からは呼ばないでください
このメソッドはオーバーライド可能です
nextRecord(table) 次のレコードへフォーカスを移動します
このメソッドはオーバーライド可能です
prevRecord(table) 前のレコードへフォーカスを移動します
このメソッドはオーバーライド可能です
doNextControl(table) テーブルを抜け、次のコントロールへフォーカスを移動します
このメソッドはオーバーライドできません
代わりにnextControlメソッドをオーバーライドしてください
doPrevControl(table) テーブルを抜け、前のコントロールへフォーカスを移動します
このメソッドはオーバーライドできません
代わりにnextControlメソッドをオーバーライドしてください
nextControl(table) テーブルを抜け、次のコントロールへフォーカスを移動します
このメソッドは、doPrevControlからのみ呼ばれます
他の場所からは呼ばないでください
このメソッドはオーバーライド可能です
prevControl(table) テーブルを抜け、前のコントロールへフォーカスを移動します
このメソッドは、doPrevControlからのみ呼ばれます
他の場所からは呼ばないでください
このメソッドはオーバーライド可能です
rangeUp(table) 選択範囲を上に広げます
このメソッドはオーバーライド可能です
rangeDown(table) 選択範囲を下に広げます
このメソッドはオーバーライド可能です
rangeLeft(table) 選択範囲を左に広げます
このメソッドはオーバーライド可能です
rangeRight(table) 選択範囲を右に広げます
このメソッドはオーバーライド可能です
rangeStartCol(table) 選択範囲を左端の列まで広げます
このメソッドはオーバーライド可能です
rangeEndCol(table) 選択範囲を右端の列まで広げます
このメソッドはオーバーライド可能です
rangePageUp(table) 選択範囲を1ページ分上に広げます
このメソッドはオーバーライド可能です
rangePageDown(table) 選択範囲を1ページ分下に広げます
このメソッドはオーバーライド可能です
rangeAll(table) Contentとその子コンテント全体を選択範囲とします
このメソッドはオーバーライド可能です

実際にキーボードオペレーションの拡張を行う際は、 CKeyboardOperationのソースコードを参考にしてください。

次へ    ドキュメントのトップ / ホーム


Copyright (c) 2009, SystemBase Co.,Ltd.
All rights reserved.