ビジュアライゼーション・ツリーへの低レベルの直接アクセス
VLF-WIN コードを使って直接Visual Lansaのツリー(クラス #PRIM_TRVW)にアクセスでき、インスタンス・リストの内容を確認できます。
ツリーは2つ存在する場合があります - 主となる1次ツリーと、[リスト表示]や[2つのリストを表示(上下)]を選択した場合は2次ツリーがある場合も考えられます。
ツリーを参照できるようになると、ツリー内の項目や項目内のカラムにもアクセスできるようになります。
プロパティ#avListManager.avPrimaryTree と #avListManager.avSecondaryTree により1次と2次のVLツリーへの参照ができるようになり、インスタンス・リストが見れるようになります。
使用時の重要なポイントは以下の通りです:
- このツリーはインスタンス・リストを視覚化したものです。 インスタンス・リストそのものではありません。 インスタンス・リストの表示方法を変更しても、インスタンス・リスト自体は変更されません。
- ユーザーのコード内でツリーやツリー項目を保存しないでください。 保存してしまうと、リソースが失われるなどの問題につながる可能性があります。
- ツリーまたはツリー項目の選択やフォーカスを変更しないでください。 代わりにインスタンス・リストを更新してください。
- コードの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
注: この例は空のツリーには対応しません。