バージョン 6.3.3
 —  プラグインによる Natural スタジオの拡張  —

INaturalStudioPlugInTree

このドキュメントでは、次のトピックについて説明します。


機能

プラグインは、このインターフェイスでツリービューおよびリストビューノードの情報を Natural スタジオに提供します。 プラグイン独自のノードタイプが定義されており、そのいずれかのタイプのノードでツリービューまたはリストビュードキュメントウィンドウがルートノードとして開かれると、Natural スタジオはこのインターフェイスのメソッドを呼び出します。 ツリービューまたはリストビューを展開またはリフレッシュするように要求されると、Natural スタジオはそのノードの情報を収集するメソッドを呼び出します。

注意:
プラグインは、インターフェイス INatAutoNodeTypes を使用して独自のノードタイプを定義します。

インターフェイスを提供するために、Natural で作成されたプラグインのクラス定義には、サンプルライブラリ SYSEXPLG のインターフェイスモジュール(コピーコード)NSTPLG-T が含まれています。 他の言語で作成されたプラグインは、タイプライブラリ naturalstudioplugin.tlb を使用します。 このタイプライブラリは、サンプルライブラリ SYSEXPLG にも含まれています。

Top of page

メソッド

次のメソッドを使用できます。

GetData

Natural スタジオは、タイプとキーで識別されるプラグイン定義ノードの追加情報を取得するためにこのメソッドを呼び出します。

パラメータ

名前 Natural データフォーマット 変形タイプ 注釈
ReturnValue L VT_BOOL  
Type I4 VT_I4  
Key A VT_BSTR  
Info A VT_BSTR  
Template I4 VT_I4  
Data A VT_BSTR 参照
ReturnValue

プラグインは、ノードを認識している場合は TRUE を返し、それ以外の場合は FALSE を返します。

Type

ノードのタイプです。

Key

ノードタイプ内のノードを識別するキーです。

Info

プラグインが以前ノードに割り当てた追加情報文字列です。

Template

ツリービューまたはリストビューのドキュメントウィンドウを開くときに、プラグインがメソッド INatAutoObjectTrees::Open または INatAutoObjectLists::Open に渡した TemplateID です。

Data

プラグインは、ノードを記述する XML ドキュメントを含む文字列を返します。 XML ドキュメントは次の DTD に従って構造化されています。

<?xml version="1.0"?>
<!ELEMENT data (pinfo?, pname?, (ntype, nkey)?)>
<!ELEMENT pinfo	(#PCDATA)>
<!ELEMENT pname	(#PCDATA)>
<!ELEMENT ntype	(#PCDATA)>
<!ELEMENT nkey	 (#PCDATA)>
エレメント 意味
pinfo ノードに関する追加情報です。Natural スタジオが後でこのノードを参照するたびに、プラグインはこのノードを受け取ることを求めます。 Natural スタジオは、このエレメントの内容は考慮せず、ただ受け渡しをするだけです。
pname ツリービューまたはリストビューのノードで表示されるテキスト。
ntype プラグインによって定義されたノードが定義済み Natural スタジオタイプのノードに対応する場合は、このエレメントには対応する定義済みノードのタイプが含まれます。
nkey プラグインによって定義されたノードが定義済み Natural ノードタイプのノードに対応する場合は、このエレメントには対応する定義済みノードのキーが含まれます。

GetChildren

Natural スタジオは、プラグインによって定義されたノードの子ノードを取得するためにこのメソッドを呼び出します。 このノードは、タイプおよびキーによって識別されます。

パラメータ

名前 Natural データフォーマット 変形タイプ 注釈
ReturnValue I4 VT_I4  
Type I4 VT_I4  
Key A VT_BSTR  
Info A VT_BSTR  
Template I4 VT_I4  
Children A VT_BSTR 参照
ReturnValue

子ノードの数を示します。

Type

ノードのタイプです。

Key

ノードタイプ内のノードを識別するキーです。

Info

プラグインが以前ノードに割り当てた追加情報文字列です。

Template

ツリービューまたはリストビューのドキュメントウィンドウを開くときに、プラグインがメソッド INatAutoObjectTrees::Open または INatAutoObjectLists::Open に渡した TemplateID です。 Template の各値に対応した各ツリー構造を返すために、プラグインはパラメータ Template を解釈できます。

Children

プラグインは、子ノードを記述する XML ドキュメントを含む文字列を返します。 XML ドキュメントは次の DTD に従って構造化されています。

<?xml version="1.0"?>
<!ELEMENT children (child*)>
<!ELEMENT child	(ptype, pkey, pinfo?, pname?,
phch?, children?, (ntype, nkey)?)>
<!ELEMENT ptype (#PCDATA)>
<!ELEMENT pkey 	(#PCDATA)>
<!ELEMENT pinfo	(#PCDATA)>
<!ELEMENT pname	(#PCDATA)>
<!ELEMENT phch	 (#PCDATA)>
<!ELEMENT ntype	(#PCDATA)>
<!ELEMENT nkey	 (#PCDATA)>
エレメント 意味
ptype 子ノードのタイプ。
pkey そのタイプ内で子ノードを識別するキー。
pinfo 子ノードに関する追加情報。Natural スタジオが後でこのノードを参照するたびに、プラグインはこのノードを受け取ることを求めます。 Natural スタジオは、このエレメントの内容は考慮せず、ただ受け渡しをするだけです。
pname ツリービューまたはリストビューで子ノードとともに表示されるテキスト。
children 任意の深さで子ノードのサブツリーを指定することを許可します。 このエレメントが指定された場合は、子ノード自体に子があってメソッド HasChildren はこの子ノードに対して呼び出されないと暗黙的にみなされます。
phch

指定の子ノード自体に子ノードがあるかどうかを事前に指定することを許可します。

  • 値 1 は、子ノード自体に子ノードがあることを意味します。

  • 値 -1 は、子ノード自体には子ノードがないことを意味します。

  • 値 0(デフォルト)は、子ノード自体に子ノードがあるかどうかを確認できず、メソッド HasChildren への次の呼び出しでの照会が必要なことを意味します。

ntype プラグインによって定義されたノードが定義済み Natural スタジオタイプのノードに対応する場合は、このエレメントには対応する定義済みノードのタイプが含まれます。
nkey プラグインによって定義されたノードが定義済み Natural ノードタイプのノードに対応する場合は、このエレメントには対応する定義済みノードのキーが含まれます。

HasChildren

Natural スタジオは、タイプとキーで識別されるプラグイン定義ノードに任意のタイプの子ノードがあるかどうかを確認するためにこのメソッドを呼び出します。 これは、ツリービュードキュメントウィンドウでノードを展開可能として表示するかどうかを決定するために使用されます。

パラメータ

名前 Natural データフォーマット 変形タイプ 注釈
ReturnValue L VT_BOOL  
Type I4 VT_I4  
Key A VT_BSTR  
Info A VT_BSTR  
Template I4 VT_I4  
Children A VT_BSTR 参照
ReturnValue

プラグインは、ノードに子ノードがある場合は TRUE を返し、それ以外の場合は FALSE を返します。

Type

ノードのタイプです。

Key

ノードタイプ内のノードを識別するキーです。

Info

プラグインが以前ノードに割り当てた追加情報文字列です。

Template

ツリービューまたはリストビューのドキュメントウィンドウを開くときに、プラグインがメソッド INatAutoObjectTrees::Open または INatAutoObjectLists::Open に渡した TemplateID です。 Template の各値に対応した各ツリー構造を返すために、プラグインはパラメータ Template を解釈できます。

Children

プラグインは、指定のノードに子ノードがあることを認識しているだけでなく、子ノード自体も認識している場合は、このパラメータでそれらを返すことができます。 その後プラグインは、子ノードを記述する XML ドキュメントを含む文字列を返します。 XML ドキュメントは、GetChildren で定義された DTD に従って構造化されています。

GetAttributes

Natural スタジオは、指定のノードタイプの属性に関するメタ情報を取得するためにこのメソッドを呼び出します。 このメソッドは、ノードの属性がリストビュードキュメントウィンドウに表示される場合に呼び出されます。

パラメータ

名前 Natural データフォーマット 変形タイプ 注釈
ReturnValue I4 VT_I4  
Type I4 VT_I4  
Template I4 VT_I4  
Attributes A VT_BSTR 参照
ReturnValue

定義された属性の数。

Type

ノードのタイプです。

Template

ツリービューまたはリストビューのドキュメントウィンドウを開くときに、プラグインがメソッド INatAutoObjectTrees::Open または INatAutoObjectLists::Open に渡した TemplateID です。 Template の各値に対応した各属性セットを返すために、プラグインはパラメータ Template を解釈できます。

Attributes

プラグインは、属性を記述する XML ドキュメントを含む文字列を返します。 XML ドキュメントは次の DTD に従って構造化されています。

<?xml version="1.0"?>
<!ELEMENT attributes (attdef*)>
<!ELEMENT attdef	    (akey, acaption?)>
<!ELEMENT akey     (#PCDATA)>
<!ELEMENT acaption (#PCDATA)>
エレメント 意味
akey 属性を内部的に識別するキーです。 このキーはプラグインによって自由に定義されます。
acaption 属性を外部的(リストビュー列ヘッダーなど)に表示するために使用するキャプションです。

定義済み Natural スタジオノードタイプに対応するノードに、対応する Natural ノードタイプの属性を指定することもできます。 これらの属性を参照するために、以下の定義済み属性キーが使用されます。 これらの属性キーのいずれかが使用された場合は、キャプションは Natural スタジオによって事前定義されるので、属性キャプションを指定する必要はありません。

キー キャプション
NOLibrary Library name
NOFnr ファイル番号
NODBID Database number
NOType Natural オブジェクトタイプ
NOMode Mode (Structured/Report)
NOUserID ユーザー ID
NOSrcDate Date of last save
NOSrcSize ソースサイズ
NOCatDate Date of last catalog
NOCatSize GP size

GetAttributeValues

Natural スタジオは、プラグインによって定義されたノードの属性値を取得するためにこのメソッドを呼び出します。 このノードは、タイプおよびキーによって識別されます。

パラメータ

名前 Natural データフォーマット 変形タイプ 注釈
ReturnValue I4 VT_I4  
Type I4 VT_I4  
Key A VT_BSTR  
Info A VT_BSTR  
Template I4 VT_I4  
AttributeValues A VT_BSTR 参照
ReturnValue

属性値の数。

Type

ノードのタイプです。

Key

ノードタイプ内のノードを識別するキーです。

Info

プラグインが以前ノードに割り当てた追加情報文字列です。

Template

ツリービューまたはリストビューのドキュメントウィンドウを開くときに、プラグインがメソッド INatAutoObjectTrees::Open または INatAutoObjectLists::Open に渡した TemplateID です。 Template の各値に対応した各属性セットを返すために、プラグインはパラメータ Template を解釈できます。

AttributeValues

プラグインは、属性値を記述する XML ドキュメントを含む文字列を返します。 XML ドキュメントは次の DTD に従って構造化されています。

<?xml version="1.0"?>
<!ELEMENT attributevalues (attval*)>
<!ELEMENT attval	 (akey, avalue)>
<!ELEMENT akey (#PCDATA)>
<!ELEMENT avalue (#PCDATA)>
エレメント 意味
akey 属性を内部的に識別するキーです。 キーは、以前に GetAttributes への呼び出しで返されたキーのいずれかに一致する必要があります。一致していない場合は、エレメントは無視されます。
avalue 属性値です。

Top of page