コマンド・ハンドラーとリスト・マネージャー
インスタンス・リストでエンド・ユーザーは1つ以上のビジネス・オブジェクト・インスタンスを選択し、コマンド(つまりコマンド・ハンドラー)を実行することができます。
コマンド・ハンドラーでは通常から以下を認識する必要があります。
· Current Instance。これは選択されたインスタンス(1つだけ選択した場合)、あるいはフォーカスが当たっているインスタンス(複数選択の場合)。
· Selected Instances。選択されたすべてのインスタンス。
コマンド・ハンドラーでは、以下のリスト・マネージャー・メソッドが使用できます。
WindowsとWAMアプリケーション |
説明 |
Invoke #avListManager.GetCurrentInstance |
リスト・マネージャーにカレント・ビジネス・オブジェクト・インスタンスの詳細を問い合わせます。 コマンド・ハンドラーが1つのビジネス・オブジェクト・インスタンスを扱うように設計されている場合(例えばある製品の詳細を表示する場合)、このメソッドを使用して現在の製品を検出する必要があります。 |
Invoke #avListManager.GetSelectedInstance |
リスト・マネージャーにリストで選択されたインスタンスをすべて返すように要求します。複数のオブジェクト・インスタンスを操作する(例えば選択した全従業員の詳細を印刷する)よう設計されたコマンド・ハンドラーもあります。 |
Invoke #avListManager.GetFromList 現在WAMでは無効です。 |
リスト・マネージャーにインスタンス・リストのインスタンスの固有な識別子とビジュアル識別子を返すように要求します。インスタンスを読み込むためにAKeynおよびNKeynの値は固有に識別できる必要があります。 |
Invoke #avListManager.GetInstance |
リスト・マネージャーにリストでインスタンスのエントリーをすべて返すように要求します。このメソッドで、コマンド・ハンドラーがすべてのオブジェクト・インスタンスをフィルターで返せるように設計できます。 |
Invoke #avListManager.AlterColumnHeadings 現在WAMでは無効です。 |
実行時に、インスタンス・リストの欄見出しをオーバーライドするために使用。これを使用すると、インスタンス・リストを各種のフィルター検索の結果に適したものにすることができます。 |
Invoke #avListManager.ResetAlteredHeadings 現在WAMでは無効です。 |
インスタンス・リストの欄見出しのオーバーライドをすべて削除するために使用。 |
DisplaySorted 現在WAMでは無効です。 |
実行時に、列の表示/非表示でインスタンス・リストをソートするために使用。最大4つのソート列を指定することができます。 |
Windowsアプリケーションではリスト・マネージャーはListSelectionChangedイベントも通知しますので、より複雑なコマンド・ハンドラーではこれをlistenして使用することができます。これは選択したオブジェクト・インスタンスのセットを変更するたびに通知されます。Webブラウザー・アプリケーションでは、同じイベントがコマンド・ハンドラーを完全に(再)実行するものとして扱います。組み込みのデモとプログラミング テクニックアプリケーションにはこのタイプのイベント処理例があります。
注:インスタンス・リストの内容や選択は、いかなる方法でもListSelectionChangedイベント・ハンドラー内で変更してはいけません。
WindowsとWebブラウザー・アプリケーションでインスタンス・リストを管理するプログラミング・モデルは同じです。
WindowsまたはWAMアプリケーションでは、以下の方法でEmployeesインスタンス・リストの現在のEmployeeは何かを判別します。
Invoke #avListManager.GetCurrentInstance AKey1(#EMPNO)
以下の方法で現在インスタンス・リスト内にあるEmployeeを、選択しているか否かにかかわらず、すべて見つけ出します。
Def_cond *RetOkay '#RetCode = OK'
Invoke #avListManager.GetInstance First(TRUE) Akey1(#Empno)
ReturnCode(#RetCode)
DoWhile *RetOkay
Fetch Fields(…..whatever ….) From_File(PSLMST) With_Key(#Empno)
Invoke #avListManager.GetInstance First(FALSE) Akey1(#Empno)
ReturnCode(#RetCode)
EndWhile