フック一覧 Skip (項目フック) 前の項目フック 次の項目フック

VB C# ALL プログラミング言語によるフィルタ (ここで選んだ言語で選別された説明や図だけが表示されます)

Skip (スキップ) 項目フックメソッド

役割 (この項目フックメソッドに委託されている処理)

この項目にカーソルを留めるかスキップさせるかの判断をする。この項目にカーソルを留める場合には、この項目の何桁目にカーソルを位置づけるのかを設定することもできる (使用例参照)。

配置 (ツーピーススタイルの場合にこの項目フックメソッドをどこに配置できるか)

ローカルピースに配置するか、または配置しない。セントラルピースに配置することは禁止されている。

代表的な書き方 (詳しい構文はフックメソッドの書き方を参照)

VB での書き方:
 Friend Function Skip(パラメタ宣言列) As Boolean
 または
 Friend Function 項目略称_Skip(パラメタ宣言列) As Boolean

C# での書き方:
 internal bool Skip(パラメタ宣言列)
 または
 internal bool 項目略称_Skip(パラメタ宣言列)

Java での書き方:
 boolean Skip(パラメタ宣言列)
 または
 boolean 項目略称_Skip(パラメタ宣言列)

なお、フック名としては、Skip の他にスキップを用いることができる。

呼び出される契機 (以下が切っ掛けとなりこのフックメソッドが呼び出される)

この項目にフォーカスが移ってきたとき。ただし、カーソルが留まることのない表示項目に関しては、呼び出されることはない。

戻り値の意味とデフォルト動作 (戻り値による ItemBase への伝言)

ItemBase.SKIP_True (= True): 次のデータ項目にスキップせよ。

ItemBase.SKIP_False (= False): 次のデータ項目にスキップせずにカーソルを留めよ。

デフォルト動作: Skip 画面フックメソッドが組み込まれていない場合の動作は、ItemBase.SKIP_False が設定された場合と同様である。

代行メッセージ (処理の流れに応じて発せられるメッセージ; カスタマイズ可能)

(関係する代行メッセージなし)

使用上のヒントと注意事項

このフックメソッドの中で、画面の詳細情報 CursorDirection の値によって、どの方向からカーソルが来たのかを知ることができる。また、戻り値として ItemBase.SKIP_True を指定した場合、CursorDirection の設定によって、カーソルの方向を変更することができる。

次のデータ項目にスキップさせるために、戻り値として ItemBase.SKIP_True を指定した場合でも、次のデータ項目がない場合には、カーソルはこの項目に留まる。

この項目の何桁目かにカーソルを位置づけたければ、以下の例のように、この項目に対応するコントロールの SelectionStart プロパティを設定して、さらに戻り値として ItemBase.SKIP_False を指定する。

この項目に対応するコントロールは、RadioButton であってはならない。

このフックメソッドの呼び出しは、プラットフォーム .NET のイベント発生の仕様に依存しており、場合によると重複して複数回呼び出されることがある。重複して呼び出されても問題のないようにプログラミングすることが必要である。

このフックメソッドの呼び出しは、プラットフォーム Java のイベント発生の仕様に依存しており、場合によると重複して複数回呼び出されることがある。重複して呼び出されても問題のないようにプログラミングすることが必要である。

関連事項

フォーカスの移動制御は、フックメソッドで行うのではなく、フォーカスの制御に関する管理情報を変更するメソッド InOutModeItem または InOutModeM または InOutModeN で行うのがお勧めである。

フォーカスの移動制御のための項目フックメソッドに NextCtrl がある。しかし、Skip が使えるようなら Skip を用いるのがお勧めであり、そうでない場合にだけ、NextCtrl の利用を検討することにしていただきたい。

使用例

' 商品コードと受注個数が空欄でない場合だけカーソルを留める。
Friend Function スキップ(ByVal 商品コード As String, ByVal 受注個数 As WrpDecimal, ByVal fB As FormBase) As Boolean
    If 商品コード = String.Empty Then
        If fB.CursorDirection = FormBase.DIRECTION_Up Then fB.CursorDirection = FormBase.DIRECTION_Prev
        Return ItemBase.SKIP_True
    ElseIf 受注個数 Is Nothing Then
        Return ItemBase.SKIP_True
    Else
        Return ItemBase.SKIP_False
    End If
End Function ' スキップ
// 商品コードと受注個数が空欄でない場合だけカーソルを留める。
internal bool スキップ( FormBase fB, string 商品コード, WrpDecimal 受注個数 ) {
    if (商品コード == string.Empty) {
        if (fB.CursorDirection == FormBase.DIRECTION_Up) fB.CursorDirection = FormBase.DIRECTION_Prev;
        return ItemBase.SKIP_True;
    }
    else if (受注個数 == null) {
        return ItemBase.SKIP_True;
    }
    else {
        return ItemBase.SKIP_False;
    }
} // スキップ
// 商品コードと受注個数が空欄でない場合だけカーソルを留める。
boolean スキップ( FormBase fB, String 商品コード, BigDecimal 受注個数 ) {
    if (商品コード.length() == 0) {
        if (fB.CursorDirection == FormBase.DIRECTION_Up)
            fB.CursorDirection = FormBase.DIRECTION_Prev;
        return ItemBase.SKIP_True;
    } else if (受注個数 == null) {
        return ItemBase.SKIP_True;
    } else {
        return ItemBase.SKIP_False;
    }
} // スキップ
' 商品コードと受注個数が空欄でない場合だけカーソルを留める。
Friend Function スキップ(ByVal 商品コード As String, ByVal 受注個数 As WrpDecimal, ByVal fB As FormBase) As Boolean
    If 商品コード = String.Empty Then
        If fB.CursorDirection = FormBase.DIRECTION_Up Then fB.CursorDirection = FormBase.DIRECTION_Prev
        Return ItemBase.SKIP_True
    ElseIf 受注個数 Is Nothing Then
        Return ItemBase.SKIP_True
    Else
        Return ItemBase.SKIP_False
    End If
End Function ' スキップ
// 商品コードと受注個数が空欄でない場合だけカーソルを留める。
internal bool スキップ( FormBase fB, string 商品コード, WrpDecimal 受注個数 ) {
    if( 商品コード == string.Empty ) {
        if( fB.CursorDirection == FormBase.DIRECTION_Up ) fB.CursorDirection = FormBase.DIRECTION_Prev;
        return ItemBase.SKIP_True;
    }
    else if( 受注個数 == null ) {
        return ItemBase.SKIP_True;
    }
    else {
        return ItemBase.SKIP_False;
    }
} // スキップ
// 商品コードと受注個数が空欄でない場合だけカーソルを留める。
boolean スキップ( FormBase fB, String 商品コード, BigDecimal 受注個数 ) {
    if( 商品コード.length() == 0 ) {
        if( fB.CursorDirection == FormBase.DIRECTION_Up ) fB.CursorDirection = FormBase.DIRECTION_Prev;
        return ItemBase.SKIP_True;
    }
    else if( 受注個数 == null ) {
        return ItemBase.SKIP_True;
    }
    else {
        return ItemBase.SKIP_False;
    }
} // スキップ