フック一覧 Current (画面フック) 前の画面フック 次の画面フック

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

Current (現画面) 画面フックメソッド

 この画面フックメソッドは、主にアプリフレームと呼ばれる画面アプリのための上位フレームワークを設計する方々がお使いになるものです。一般のアプリ開発者の方々は、上位フレームワーク設計者から示された情報があれば、必ずしもここの内容を詳細に知る必要はありません。

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

処理対象レコード群の中のカレント画面データをファイルまたはデータベースから (再度) 読み集めて画面に表示する。

 

前提とする事前環境: この画面フックメソッドが動作する以前に、画面フックメソッド Open, SelectFh, SelectExec などが処理対象レコード群を決定していて、適当な変数 (上図の灰色の矢印) がそれを指し示すように設定してある。

そして、画面フックメソッド SelectFh または SelectExec などがカレント画面データを選択して、適当な変数 (上図の空色の矢印) がそれを指し示すように設定してある。

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

ローカルピースかセントラルピースかのどちらか一方に配置する。または、どちらにも配置しない。

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

VB での書き方:
 Friend Function Current(パラメタ宣言列) As Integer
 または
 Friend Function 画面略称_Current(パラメタ宣言列) As Integer

C# での書き方:
 internal int Current(パラメタ宣言列)
 または
 internal int 画面略称_Current(パラメタ宣言列)

Java での書き方:
 int Current(パラメタ宣言列)
 または
 int 画面略称_Current(パラメタ宣言列)

なお、フック名としては、Current の他に現画面を用いることができる。

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

カレント画面のデータを読み込むことが必要になったとき、すなわち SelectFh 画面フックメソッドの戻り値に表示モードまたは更新モードに変えよという伝言がなされた後。あるいは、アプリ操作者からこの画面に対して Cancel 指示がなされたとき。

Cancel 指示とは、アプリ操作者がボタン Cm_Cancel をクリックすること、またはメニュー項目 Mn_Cancel をクリックすることか、これに相当する操作 (対応するショートカットキーの押下) をすること、または Cancel に対応づけられたファンクションキーを押下することを意味する。

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

FormBase.CURRENT_NoData (= 0): 画面データをファイルまたはデータベースから読み込まなかった。

n (1 以上の整数): ボディ部の明細レコード数が n のカレント画面データをファイルまたはデータベースから読み込んだ。

(ボディ部が存在しない場合には、明細レコード数 n の値を 1 にしてください)

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

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

メッセージコード: "CURRENT"

"データが存在しません。"

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

このフックメソッドの中では、単にファイルまたはデータベースの一つのレコードを読み込めばよいとは限らない。画面データ識別子で指し示された必要な画面データを読み集めて画面に表示することが必要である。

通常はボディ部 (拡張ボディ部) の先頭に初期表示されるのはそれぞれの先頭の明細行であるが、 プロパティ DspTopEDe, DspTopEDe に明細行番号を設定することによって、 その明細行番号の明細がボディ部 (拡張ボディ部) の先頭に初期表示されるようにできる。

関連事項

画面データを読み集める役割の画面フックメソッドには、この他に First, Last, NextFh, Prev がある。

適当な変数 (上図の空色の矢印) がカレント画面データを指し示すように設定する (または設定し直す) 役割をもつ画面フックメソッドには、First, Last, NextFh, Prev, SelectFh, SelectExec などがあり、この画面フックメソッドはその変数を参照する。

使用例

' 処理対象のデータの中から現画面に関するレコードを再度読み込む (Current)。
Friend Function 現画面(ByVal fB As FormBase) As Integer
    If 画面データキー = String.Empty Then
        Return FormBase.CURRENT_NoData
    Else
        メインレコード.SelectEqual(画面データキー)
        FromDBToHdTl(fB)
        Dim 明細個数 As Integer = Integer.Parse(JutyuTable.明細数)
        ' 
        Dim 明細行インデックス As Integer = 0
        While 明細行インデックス < 明細個数
            明細レコード.SelectEqual(画面データキー + TextDBMS.AlignRight((明細行インデックス + 1).ToString(), 3))
            FromDBToBd(fB, 明細行インデックス)
            明細行インデックス += 1
        End While
        ' 
        Return 明細行インデックス
    End If
End Function ' 現画面
// 処理対象のデータの中から現画面に関するレコードを再度読み込む (Current)。
internal int 現画面( FormBase fB ) {
    if (画面データキー == string.Empty) {
        return FormBase.CURRENT_NoData;
    }
    else {
        メインレコード.SelectEqual(画面データキー);
        FromDBToHdTl(fB);
        int 明細個数 = int.Parse(受注レコード.明細数);
        // 
        int 明細行インデックス = 0;
        while (明細行インデックス < 明細個数) {
            明細レコード.SelectEqual(画面データキー + TextDBMS.AlignRight((明細行インデックス + 1).ToString(), 3));
            FromDBToBd(fB, 明細行インデックス);
            明細行インデックス += 1;
        }
        // 
        return 明細行インデックス;
    }
} // 現画面
// 処理対象のデータの中から現画面に関するレコードを再度読み込む (Current)。
int 現画面( FormBase fB ) {
    if (画面データキー.length() == 0) {
        return FormBase.CURRENT_NoData;
    } else {
        メインレコード.SelectEqual(画面データキー);
        FromDBToHdTl(fB);
        int 明細個数 = Integer.parseInt(受注レコード.明細数);
        // 
        int 明細行インデックス = 0;
        while (明細行インデックス < 明細個数) {
            明細レコード.SelectEqual(画面データキー
                    + TextDBMS.AlignRight(
                                          String.valueOf(明細行インデックス + 1),
                                          3));
            FromDBToBd(fB, 明細行インデックス);
            明細行インデックス += 1;
        }
        // 
        return 明細行インデックス;
    }
} // 現画面