フック一覧 NextCtrl (項目フック) | 前の項目フック 次の項目フック |
VB C# ALL プログラミング言語によるフィルタ (ここで選んだ言語で選別された説明や図だけが表示されます)
◇ 役割 (この項目フックメソッドに委託されている処理)
この項目の次にカーソルを移す項目 (MANDALA コントロール) を指定する。
◇ 配置 (ツーピーススタイルの場合にこの項目フックメソッドをどこに配置できるか)
ローカルピースに配置するか、または配置しない。セントラルピースに配置することは禁止されている。
◇ 代表的な書き方 (詳しい構文はフックメソッドの書き方を参照)
VB での書き方:
Friend Function NextCtrl(パラメタ宣言列) As Integer
または
Friend Function 項目略称_NextCtrl(パラメタ宣言列) As Integer
C# での書き方:
internal int NextCtrl(パラメタ宣言列)
または
internal int 項目略称_NextCtrl(パラメタ宣言列)
Java での書き方:
int NextCtrl(パラメタ宣言列)
または
int 項目略称_NextCtrl(パラメタ宣言列)
なお、フック名としては、NextCtrl の他に次項目を用いることができる。
◇ 呼び出される契機 (以下が切っ掛けとなりこのフックメソッドが呼び出される)
この項目から他の項目にフォーカスが移るとき。ただし、マウスによるカーソル移動の場合には呼び出されない。 また、スクロール操作とみなされる操作を行った場合にも呼び出されない。
◇ 戻り値の意味とデフォルト動作 (戻り値による ItemBase への伝言)
カーソルの移動先を以下の数値で指定する。
移動先項目 (コントロール) の TabIndex の値を戻り値とすると: その項目にフォーカスが移る。ただし、その項目にカーソルを留めることができない場合には、次の項目にフォーカスが移る。
移動先項目 (コントロール) についての Cx 値を戻り値とすると: その項目にフォーカスが移る。ただし、その項目にカーソルを留めることができない場合には、次の項目にフォーカスが移る。(Cx 値は、フックメソッドのパラメタ宣言で Cx_項目略称 と宣言することで取得できる整数型の値。)
ItemBase.NEXTCTRL_Next (= -1): 次の項目にフォーカスが移る。
ItemBase.NEXTCTRL_Current (= -2): 現項目にカーソルが留まる。
デフォルト動作: NextCtrl 項目フックメソッドが組み込まれていない場合の動作は、ItemBase.NEXTCTRL_Next が設定された場合と同様である。
◇ 代行メッセージ (処理の流れに応じて発せられるメッセージ; カスタマイズ可能)
(関係する代行メッセージなし)
◇ 使用上のヒントと注意事項
NextCtrl フックメソッドは、カーソルを戻す (逆方向に移動させる) 場合に使うものである。
NextCtrl フックメソッドが問題なく使えるのは、 同一の区画 (ヘッド部、ボディ部、拡張ボディ部、テール部) 内におけるカーソル移動で、 かつボディ部または拡張ボディ部の場合には同一明細内でのカーソル移動で、 かつスクロール制御に関係しない操作を行った場合に限られる。 これ以外の場合には、他のカーソル制御と競合するために、期待どおりにフォーカスが移動しない場合がある。
NextCtrl フックメソッドは、もともとフォーカスが移動しないような場合には呼び出されない。たとえば、カーソルパスの最終項目にカーソルがあるときに、アプリ操作者が矢印キーなどで次項目に移動せよと命じても NextCtrl フックメソッドは呼び出されない。
移動先項目 (コントロール) の TabIndex の値を戻り値とする場合、MANDALA コントロールの TabIndex の値は、実行開始時に MANDALA.net によって変更されていることに注意が必要である。デザイン時の TabIndex の値を用いてもうまくいかない。
NextCtrl フックメソッドは、Cs_ ボタンとの相性がよくない。NextCtrl フックメソッドをもつ項目にカーソルがある場合に、ある項目の Cs_ ボタンをクリックしても、別の項目にフォーカスが移動してしまい Cs_ ボタンの目的を達しないことがある。 もしも、Cs_ ボタンの狙いどおりの動きにしたい場合には、フォーカスの制御を NextCtrl フックメソッドではなく、フォーカスの制御に関する管理情報を変更するメソッド ItemBase.InOutModeItem または FormBase.InOutModeM または FormBase.InOutModeN で行うか、あるいは Skip フックメソッドを用いて行うのがお勧めである。
◇ 関連事項
フォーカスの移動制御は、フックメソッドで行うのではなく、フォーカスの制御に関する管理情報を変更するメソッド ItemBase.InOutModeItem または FormBase.InOutModeM または FormBase.InOutModeN で行うのがお勧めである。
フォーカスの移動制御のための項目フックメソッドに Skip がある。Skip が使えるようなら、この NextCtrl ではなく Skip を用いるのがよい。
◇ 使用例
' 受注個数がインプットされていないときにカーソルをこの項目の一つ前の項目 (受注個数) に戻す。 Friend Function 次項目(ByVal 受注個数 As WrpDecimal, ByVal Cx_受注個数 As Integer) As Integer If 受注個数 Is Nothing Then Return Cx_受注個数 Else Return ItemBase.NEXTCTRL_Next End If End Function ' 次項目
// 受注個数がインプットされていないときにカーソルをこの項目の一つ前の項目 (受注個数) に戻す。 internal int 次項目( WrpDecimal 受注個数, int Cx_受注個数 ) { if (受注個数 == null) { return Cx_受注個数; } else { return ItemBase.NEXTCTRL_Next; } } // 次項目
// 受注個数がインプットされていないときにカーソルをこの項目の一つ前の項目 (受注個数) に戻す。 int 次項目( BigDecimal 受注個数, int Cx_受注個数 ) { if (受注個数 == null) { return Cx_受注個数; } else { return ItemBase.NEXTCTRL_Next; } } // 次項目