Personal tools
You are here: Home サポート PASSCELL Personal 入門用マニュアル 4. 計算や処理を行わせる 4. 計算や処理を行わせる: 7) 高度なスクリプト記述 (3) 修飾子 ノードのNameプロパティ+".":複数の親ノードの識別
Document Actions

4. 計算や処理を行わせる: 7) 高度なスクリプト記述 (3) 修飾子 ノードのNameプロパティ+".":複数の親ノードの識別

← [4. 計算や処理を行わせる: 7) 高度なスクリプト記述 (2) 修飾子 "node." + setnode() 関数:下位ノード参照]へ戻る | ↑ [目次]へ戻る | [4. 計算や処理を行わせる: 7) 高度なスクリプト記述 (4) refer() 関数:親子関係に無いノードを参照]へ進む →


■このページで説明している内容

d) 複数の親に同じエレメントがある場合の識別方法:ノードのNameプロパティ+"."



d) 複数の親に同じエレメントがある場合の識別方法:ノードのNameプロパティ+"."

PASSCELL Personal では、Version 1.2.*以降で複数の親ノードを持つことができるようになりました。
したがって、複数の親ノードに同じ名前を持つエレメントが存在する場合があります。
このような場合、特定の親ノードのエレメントを参照するにはどのようにしたら良いでしょうか?

この場合には、参照したい親ノードのNameプロパティを修飾子としてエレメント名の前につけることでノードを特定することができます。

実際の例を見てみましょう。
以下の図を見てください。

親ノードAと親ノードBが共通の子ノード01に接続されています。


図4.7.d-1.jpg

(図4.7.d-1) 2つの親プロジェクトを持つノード

ここで、親ノードAと親ノードBは、同じエレメントから構成されています。

    「品番」エレメント
        親ノードAの値は "A-123"
        親ノードBの値は "B-999"

    「数量」エレメント
        親ノードAの値は "45"
        親ノードBの値は "12"


図4.7.d-2.jpg

(図4.7.d-2) 親ノードAのエレメント


図4.7.d-3.jpg

(図4.7.d-3) 親ノードBのエレメント

このように複数の親ノードが同じ名前を持つエレメントを持っている場合、子ノードの「見る」プロパティでは値を特定できないために、エレメント名は表示されても値は表示されません。


図4.7.d-4.jpg

(図4.7.d-4) 子ノードでは重複するエレメントの値が表示されない

では、子ノードで一方の親ノードのエレメントの値を参照してみましょう。
まず、子ノードに以下のエレメントを追加しておきます。

    親ノードの品番
    親ノードの数量

次に、子ノードの「ここだけ」スクリプトに、以下のようにスクリプトを記述します。

    親ノードの品番=親ノードA.品番;


図4.7.d-5.jpg

(図4.7.d-5) 親ノードを特定するスクリプトの記述

このように、重複するエレメント名の前に、親ノードの"Name"プロパティエレメントを指定することで参照したい親ノードを指定します。

"Name"プロパティエレメントは、エレメント欄の「プロパティ」タブをクリックすると表示されます。
通常、"Name"プロパティエレメントは、"Label"プロパティエレメント、すなわちノードのラベル文字列と同じですが、ここで編集することでラベル文字列とは別の名前を指定することが可能です。


図4.7.d-6.jpg

(図4.7.d-6) "Name"プロパティエレメント

スクリプトを記述したあと、再び子ノードを選択しなおすと、親ノードAの品番の値が取得できていることが確認できます。


図4.7.d-7.jpg

(図4.7.d-7) ポップアップメニュー(右クリック)で、特定の親ノードのエレメントを指定する

スクリプトの記述には、スクリプト欄での右クリックで表示されるポップアップメニューを使うと記述ミスをすることなく親ノードのNameプロパティを取得・記述することができます。


図4.7.d-8.jpg

(図4.7.d-8) ポップアップメニュー(右クリック)で、特定の親ノードのエレメントを指定する



← [4. 計算や処理を行わせる: 7) 高度なスクリプト記述 (2) 修飾子 "node." + setnode() 関数:下位ノード参照]へ戻る | ↑ [目次]へ戻る | [4. 計算や処理を行わせる: 7) 高度なスクリプト記述 (4) refer() 関数:親子関係に無いノードを参照]へ進む →

Powered by Plone, the Open Source Content Management System

This site conforms to the following standards: