ホーム | 機能紹介 | ドキュメント | ダウンロード |
フォーカスの制御テーブル内でフォーカスを得ることのできるフィールドはひとつだけです。 さらに、そのフィールドはContent内に存在している必要があり、 かつ対応するフィールドプロバイダの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を代入すると、デフォルトのフォーカス移動の動作を上書きできます。 オートフォーカスどのフィールドもフォーカスを得ていない状態で、 テーブルがフォーカスを得たとき、 セッティングのAutoFocusがTrueであれば、 Content内の最初のレコードの最もTabOrderの若いフィールドが自動的にフォーカスを得ます。 Table.Setting.AutoFocus = True 次へ ドキュメントのトップ / ホーム |
Copyright (c) 2009, SystemBase Co.,Ltd. |