Visual LANSA フレームワーク ガイド > フレームワーク・プログラミング > インスタンスリストとインスタンスリスト・マネージャー > 独自のスナップイン・インスタンスリストの作成 > インスタンスリストに 11 個以上の英数字列や数値列を追加
インスタンスリストに 11 個以上の英数字列や数値列を追加

独自の VLF-ONE スナップイン・リストの作成は「独自の VLF-ONE インスタンスリスト・ブラウザの作成」を参照してください。

フレームワークのインスタンスリストは、英数字列または数値列をそれぞれ10個まで追加して表示できます。それ以上の列が必要な場合は、独自のスナップイン・インスタンスリストを作成しり必要があります。  スナップイン・インスタンスリスト・ブラウザにより表示される追加列の数に制限はありません。

インスタンスリストを作成するには、コード ウィザードを使用すると必要なコードのほとんどが作成されます。実施例はコンポーネントDF_INST1に含まれています。

インスタンスリスト・ブラウザは、ビジネス・オブジェクトの [プロパティ] タブの [インスタンスリストの設定] でスナップインされます。

 無限の数の列をインスタンスリストに効果的に追加できる最も簡単なテクニックは、インスタンスリスト・マネージャーのAColumn<シンボリック名>(値)プロパティとNColumn<シンボリック名>(値)プロパティを使用することです。

(注:実際、これは、AddtoListメソッドの新しいAColumnN()パラメータとNColumnN()パラメータがよく使用されるようになったため、時間と共に使用されなくなった古いテクニックです。これは、追加の列を使用できるただ1つの方法でした)。   

以下はサンプル・フィルターの該当箇所を抜き出したRDMLXコードです。

*  BILL, MARY .. A16 などのシンボリック名を持つ、16 の英数字列を作成A16

  

set #avListManager AColumn<BILL>(#Char07 + BILL)

set #avListManager AColumn<MARY>(#Char07 + MARY)

set #avListManager AColumn<TOTAL>(#Char07 + TOTAL)

set #avListManager AColumn<CUSTNO>(#Char07 + CUSTNO) 

set #avListManager AColumn<A5>(#Char07 + A5)

set #avListManager AColumn<A6>(#Char07 + A6)

set #avListManager AColumn<A7>(#Char07 + A7)

set #avListManager AColumn<A8>(#Char07 + A8)

set #avListManager AColumn<A9>(#Char07 + A9)

set #avListManager AColumn<A10>(#Char07 + A10)

set #avListManager AColumn<A11>(#Char07 + A11)

set #avListManager AColumn<A12>(#Char07 + A12)

set #avListManager AColumn<A13>(#Char07 + A13)

set #avListManager AColumn<A14>(#Char07 + A14)

set #avListManager AColumn<A15>(#Char07 + A15)

set #avListManager AColumn<A16>(#Char07 + A16)

 

*  BILL, MARY ... N16 などのシンボリック名を持つ、16 の数値列を作成N16

 

set #avListManager nColumn<BILL>(#Zone07 + 1)

set #avListManager nColumn<MARY>(#Zone07 + 2)

set #avListManager nColumn<TOTAL>(#Zone07 + 3)

set #avListManager nColumn<CUSTNUM>(#Zone07 + 4)

set #avListManager nColumn<n5>(#Zone07 + 5)

set #avListManager nColumn<n6>(#Zone07 + 6)

set #avListManager nColumn<n7>(#Zone07 + 7)

set #avListManager nColumn<n8>(#Zone07 + 8)

set #avListManager nColumn<n9>(#Zone07 + 9)

set #avListManager nColumn<n10>(#Zone07 + 10)

set #avListManager nColumn<n11>(#Zone07 + 11)

set #avListManager nColumn<n12>(#Zone07 + 12)

set #avListManager nColumn<n13>(#Zone07 + 13)

set #avListManager nColumn<n14>(#Zone07 + 14)

set #avListManager nColumn<n15>(#Zone07 + 15)

set #avListManager nColumn<n16>(#Zone07 + 16)

 

* 追加の 32 列すべてをインスタンスリストに追加

 

Invoke Method(#avListManager.AddtoList) Visualid1(#Char07) Visualid2(#char07) Akey1(#char07)

 

たとえば、set #avListManager AColumn<CUSTNO>(#Char07 + CUSTNO)の行では、CUSTNOというシンボリック名の英数字列が作成され、その列にフィールド#CHAR07の現在の値と文字列'CUSTNO'を連結した値を含めるよう設定されます。

関連するスナップイン・インスタント・リスト・マネージャーでは、以下が一致する RDMLX コードです。

* ビジュアル識別子をグリッド列に設定

 

#STD_TEXTS := #VisualID1

#STD_TEXT := #VisualID2

 

* 追加の英数字列をグリッド列に取得

* この例ではビジュアライズされるのは 3 列のみだが、必要に応じて 16 すべてを表示することも可

 

#VF_ELXA01 := #AvListManager.Acolumn<BILL>

#VF_ELXA02 := #AvListManager.Acolumn<CUSTNO> 

#VF_ELXA03 := #AvListManager.Acolumn<A16>

 

* 追加の数値列をグリッド列に取得

* この例ではビジュアライズされるのは 3 列のみだが、必要に応じて 16 すべてを表示することも可

 

#VF_ELXNK1 := #AvListManager.Ncolumn<BILL>

#VF_ELXNK2 := #AvListManager.Ncolumn<CUSTNUM>

#VF_ELXNK3 := #AvListManager.Ncolumn<N16>

 

* 情報をグリッドに追加

 

Add_Entry #GRID

 

#VF_ELXA02 := #AvListManager.Acolumn<CUSTNO> の行では、CUSTNO という名前の追加の英数字列が表示され、グリッド列フィールド #VF_ELXA02 にコピーされます。   

コマンド・ハンドラーでも同じ手法を使用して追加列にアクセスできます。

大量の追加列を使用して大量のデータ交換を行う場合、より「固定された」(つまり汎用性がないため高速な) 手法が考えられます。これを使用して、追加列の情報をフィルターとインスタンスリスト・ブラウザ間で受け渡すことができます。  

たとえば、1つの追加列のみを使用して、フィルターと、インスタンスリスト内のスナップイン・インスタンスリスト・ブラウザとの間で「行キー」を受け渡すことができます。固有のScope(*Application)を共有する再利用可能なVLコンポーネントを作成すれば、情報のストレージの管理と、情報の論理行へのアクセスを行うことができます。また、効率を高めるためにSPACEオブジェクトを使用することもできます。フィルターとインスタンスリスト・ブラウザはこれとやり取りを行い、論理行の詳細を交換できます。      

34個の列(16個の英数字、16個の数値+ビジュアルID)を使用するサンプル・フィルター

スナップイン・インスタンスリスト・ブラウザのマッチング