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

フォーカスの制御

テーブル内でフォーカスを得ることのできるフィールドはひとつだけです。 さらに、そのフィールドに対応するフィールドプロバイダのFocusableがTrueでなければいけません。 例えば見出しのフィールドプロバイダ(CCaptionFieldProvider)はFocusableがFalseなので、 フォーカスを得ることができません。

テーブル内のフォーカスを得ているフィールドは、 FocusFieldプロパティで設定・取得できます。 このプロパティの値がNothingのときは、どのフィールドもフォーカスを得ていません。

    field = Table.FocusField
    Table.FocusField = field
    Table.FocusField = Nothing 'どのフィールドもフォーカスを得ていない状態にする

FocusRecordプロパティで、 フォーカスを得ているフィールドを含むレコードを得ることができます。 このプロパティに代入することはできません。

    record = Table.FocusRecord

フィールドのFocusメソッドを呼ぶと、このフィールドにフォーカスを与えることができます。 また、フィールドのFocusedプロパティで、このフィールドがフォーカスを得ているかを判断できます。

    Field.Focus()
    If Field.Focused Then
        'フォーカスを得ていた場合の処理
    End If

フォーカス移動

デフォルトでは、ユーザがタブキーを押すたびに、 次のフィールドへフォーカスが移っていきます。 このときのフィールド順はフィールドプロバイダの持つTabOrderによって決まります。 また、セッティングにおけるTabStopの値をNOTSTOPとすると、 そのフィールドにはタブ移動ではフォーカスが移らなくなります。

TabOrderはデフォルトでは、 レコードまたはレコードプロバイダに追加された順に振られます。 ただし、フィールドを追加した後にTabOrderへ値を代入することも可能です。

    Field.Desc.Provider.TabOrder = 0

フォーカス移動順を動的に決定する方法もあります。 フォーカスが次へ移る直前に、テーブルはFocusNextイベントを発生させます。

    Event FocusNext(field, forward, handled)

fieldには現在フォーカスを得ているフィールドが渡されます。 forwardは、フォーカスを次へ移すのか(True)、前へ移すのか(False)が渡されます。 例えば、ユーザがシフトキーを押しながらタブキーを押した場合などにFalseとなります。

このイベントハンドラ内で、 FocusFieldプロパティを設定するなどしてフォーカス制御を行い、 handledにTrueを代入すると、デフォルトのフォーカス移動の動作を上書きできます。

オートフォーカス

どのフィールドもフォーカスを得ていない状態で、 テーブルがフォーカスを得たとき、セッティングのEnterContentで指定された Content内の最初のレコードの最もTabOrderの若いフィールドが自動的にフォーカスを得ます。 EnterContentのデフォルト値はContentです。

    Table.Setting.EnterContent = Table.HeaderContent 'ヘッダコンテントにフォーカスが移る

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


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