VLF-WIN コードを使って直接Visual Lansaのツリー (クラス #PRIM_TRVW) にアクセスでき、インスタンスリストの内容を確認できます。
ツリーは2つ存在する場合があります - 主となる1次ツリーと、[リスト表示]や[2つのリストを表示(上下)]を選択した場合は2次ツリーがある場合も考えられます。
ツリーに参照できるようになると、ツリー内の項目や項目内の列にもアクセスできるようになります。
プロパティ#avListManager.avPrimaryTree と #avListManager.avSecondaryTree により1次と2次のVLツリーへの参照ができるようになり、インスタンスリストが見れるようになります。
使用時の重要なポイントは以下の通りです:
- avPrimaryTree と avSecondaryTree ツリー構造は、暗黙のうちに VLF のバージョン毎に変更する可能性があることは明らかです。この代替計画のコーディングをし、テストする必要があります。
- これらのツリーはインスタンスリストを視覚化したものです。インスタンスリストそのものではありません。 インスタンスリストの表示方法を変更しても、インスタンスリスト自体は変更されません。
- ユーザーのコード内でツリーやツリー項目を保存しないでください。保存してしまうと、リソースが失われるなどの問題につながる可能性があります。
- ツリーまたはツリー項目の選択やフォーカスを変更しないでください。代わりにインスタンスリストを更新してください。
- コードの beginlistupdate と endlistupdate のブロック内でツリーやツリー項目を変更しないでください。
- ユーザー独自のスナップイン・インスタンスリストのブラウザを使用している場合は、ツリーに参照できません。
- 変更する際は細心の注意を払い、フレームワークの他の部分とのやり取りに影響がないかよくテストしてください。
- VLツリー・レベルのプログラミング技術が必要です。
例:
一次ビジュアライゼーション・ツリー内のエントリーの数を取得する
#Std_text := #AVLISTMANAGER.avPrimaryTree.Entries.AsString
Use MESSAGE_BOX_SHOW With_Args(ok ok info *COMPONENT ('Tree has ' + #Std_text + ' entries'))
ツリーのレベル1の各エントリーに関連するアイコンを変更する
For Each(#TreeItem) In(#avListManager.avPrimaryTree.Items)
#TreeItem.Image <= #vf_ic004
Endfor
注意
この例ではツリー上で反復して、現在表示されているツリーの目に見える順序で作業するようになっています。 - これはインスタンスリストのエントリーの順序と同じとは限りません。
ツリーの最初のエントリーが見えていることを確認してください。
#avListManager.avPrimaryTree.Items<1>.EnsureVisible := True
注意
この例は空のツリーには対応しません。