5

目的:

まず、自分が何をしたいのかを述べます。次に、次の(説明)パートで、目標を達成するために何をしたかを説明します。

リボンの [挿入] タブの [ダイアグラム パーツ] セクションのプレーンコンテナーからカスタム リスト マスター シェイプを作成したいと考えています。次に、Created Custom List Master Shapeのメンバー シェイプとして使用できる別のマスター シェイプを作成します。

つまり、 UML ステンシルのクラスマスター シェイプにメンバー マスター シェイプとセパレータ マスターシェイプを追加するように、作成したマスター シェイプカスタム リスト マスター シェイプに追加したいと考えています。

そのため、次の部分で説明する目標を達成する際にいくつかの問題に直面しました。


説明:

次のように、「Visio Stencil (.vssx)」ファイルにいくつかの新しいマスター シェイプを作成しました。

マスター シェイプを使用して新しく作成されたマスター シェイプ

図 1 - マスター シェイプを使用して新しく作成されたマスター シェイプ

  1. プロパティ マスター シェイプ (緑のボックス): UML クラス ステンシル (青のボックス) のメンバー マスター シェイプから作成されます。
  2. オブジェクト マスター シェイプ (赤いボックス):リボンの [挿入] タブの [ダイアグラム パーツ] セクションのプレーン コンテナーから作成されます。

プロパティ マスター シェイプは、UML ステンシルのクラス マスター シェイプで使用するメンバー マスター シェイプのように、オブジェクト マスター シェイプのメンバー シェイプとして使用するために作成されます。

クラス マスター シェイプとその初期メンバー

図 2 - 初期メンバーを持つクラス マスター シェイプ

メンバー マスター シェイプから作成されるプロパティマスター シェイプは、次のように変更されました。

  • それにシェイプ データを 1 つ追加しました (図 3)。

    図 3 - プロパティ マスター図形の [図形データ] ダイアログ ボックス

  • これにデータ グラフィック アイテムを 1 つ追加しました (図 4)。

    図 4 - プロパティ マスター シェイプの [データ グラフィック] ダイアログ ボックスと [データ グラフィック アイテム] ダイアログ ボックス

  • シェイプシート ウィンドウユーザー定義セルのセクションにある"User.MemberName"数式を次のように変更しました(図 5)。

    =MID(SUBSTITUTE(TRIM(SHAPETEXT(TheText)),"[",""),1,FIND(" ",SUBSTITUTE(TRIM(SHAPETEXT(TheText)),"[",""))-1)

    それ以外の:

    =SHAPETEXT(TheText)

    図 5 - プロパティ マスター シェイプの [シェイプシート] ウィンドウ

プレーン コンテナから作成されるオブジェクト マスタ シェイプは、のように変更されました。

  • 図 6 のように、シェイプシート ウィンドウの[ユーザー定義セル] セクションと [イベント] セクションのセルの内容を変更しました。

    内容を変更した後のシェイプシート ウィンドウのユーザー定義セルとイベント セクションのセル

    図 6 - 内容を変更した後のシェイプシート ウィンドウのユーザー定義セルとイベント セクションのセル

    それ以外の:

    内容を変更する前のシェイプシート ウィンドウのユーザー定義セルとイベント セクションのセル

    図 7 - 内容を変更する前のシェイプシート ウィンドウのユーザー定義セルとイベント セクションのセル


質問:

最初の質問:

メンバ マスター シェイプのインスタンスUML ステンシルの Class Master Shape のインスタンス (図 8)?

オブジェクト マスター シェイプのインスタンスとプロパティ マスター シェイプの 1 つのインスタンスを、UML ステンシルとその初期メンバーのクラス マスター シェイプのインスタンスと比較する

図 8 - オブジェクト マスター シェイプのインスタンスとプロパティ マスター シェイプの 1 つのインスタンスを、UML ステンシルとその初期メンバーのクラス マスター シェイプのインスタンスと比較する

2 番目の質問:

オブジェクト マスター シェイプのインスタンスは、UML ステンシルのクラス マスター シェイプのインスタンスをページ (図 9)?

オブジェクト マスター シェイプのインスタンスと UML ステンシルのクラス マスター シェイプのインスタンスの比較

図 9 - オブジェクト マスター シェイプのインスタンスと UML ステンシルのクラス マスター シェイプのインスタンスの比較

この目的を達成するために、次の式を追加しました。ただし、うまくいかないと思います:

=IF(LISTMEMBERCOUNT()=0,DOCMD(2270),0)

3番目の質問:

挿入する UML ステンシルのクラス マスター シェイプのインスタンスにバーを表示するのと同じように、プロパティ マスター シェイプのインスタンスを挿入するオブジェクト マスター シェイプのインスタンスにバーが表示されないのはなぜですか。そのメンバー (図 10)?

関連メンバーを挿入するためのバーを表示するために、オブジェクト マスター シェイプのインスタンスを UML ステンシルのクラス マスター シェイプのインスタンスと比較する

図 10 - オブジェクト マスター シェイプのインスタンスと UML ステンシルのクラス マスター シェイプのインスタンスを比較して、関連するメンバーを挿入するためのバーを表示する

4番目の質問:

オブジェクト マスター シェイプのインスタンスが、クラス マスター シェイプのインスタンスではなく、プロパティ マスター シェイプのインスタンスのみを除いて、すべてのマスター シェイプのインスタンスを受け入れるのはなぜですか。 UML ステンシルのメンバー マスター シェイプとセパレータ マスター シェイプのインスタンスのみを受け入れる UML ステンシル (図 11)?

すべてのマスター シェイプのインスタンスを受け入れるオブジェクト マスター シェイプのインスタンスと、UML ステンシルのメンバーおよびセパレータ マスター シェイプのインスタンスのみを受け入れる UML ステンシルのクラス マスター シェイプのインスタンスとの比較

図 11 - すべてのマスター シェイプのインスタンスを受け入れるオブジェクト マスター シェイプのインスタンスと、UML ステンシルのメンバーおよびセパレータ マスター シェイプのインスタンスのみを受け入れるクラス マスター シェイプのインスタンスの比較UML ステンシル

シェイプシート ウィンドウのユーザー定義セルのセクションで「User.msvSDListItemMaster」を設定=USE("Property")しました。しかし、それはうまくいかないと思います。

5番目の質問:

プロパティ マスター シェイプの追加されたインスタンスのメンバーをオブジェクト マスター シェイプのインスタンスに挿入するためのオプションが表示されない/表示されないのはなぜですか? UML ステンシルのクラス マスター形状のインスタンスへの UML ステンシル (図 12)?

オブジェクト マスター シェイプのインスタンスとプロパティ マスター シェイプの 1 つのインスタンスを、UML ステンシルおよびそのメンバーのクラス マスター シェイプのインスタンスと比較して、追加されたメンバーに挿入メンバーのオプションを表示する

図 12 - オブジェクト マスター シェイプのインスタンスとプロパティ マスター シェイプの 1 つのインスタンスを、UML ステンシルとそのメンバーのクラス マスター シェイプのインスタンスと比較して、追加されたメンバーに挿入メンバーのオプションを表示する

6番目(最終)の質問:

マスター オブジェクトをリストに変更したときに、オブジェクト マスター シェイプのインスタンスがコンテナーのように動作し、動作するのはなぜですか?

4

1 に答える 1

2

最初の質問の答え:

この問題は常に、 「カテゴリ」という言葉に注意を払わないためです。ほとんどの場合、人々はその言葉に注意を払わず、 「シェイプ カテゴリ」の代わりに「シェイプ マスター名」を使用します。ただし、それらは互いに異なります。

私の場合、(セミコロンで区切られたカテゴリ名のリスト。他のシェイプPropertyには、コンテナー メンバーとして許可されるためには、少なくとも 1 つの一致する名前が必要です。)および(セミコロンで区切られたリストのセミコロンで区切られたリストカテゴリ名. 他の形状は、リスト メンバーとして許可されるために、少なくとも 1 つの一致する名前を持っている必要があります.)代わりに、形状カテゴリ( ) .User.msvSDContainerRequiredCategories User.msvSDListRequiredCategories User.msvShapeCategories = Member

比較する

図 1 - 「形状マスター名」と「形状カテゴリ」の比較


2番目の質問の答え:

この問題を解決するには、次の 2 つのことに注意する必要があります。

まず、マスターシェイプをインスタンス化した後、自動的に追加したいシェイプを追加する必要があります。そのため、名前を付けて追加したい各形状の行を追加する必要がありUser.msvSDListItemMaster[Index] ます (挿入コマンドのインスタンスを作成するマスター形状の名前または UniqueID。値は USE() 関数内に配置する必要があります)。 .) .

ご覧のとおり、追加したい図形は 1 つだけです。User.msvSDListItemMasterそのため、行の名前を に変更する必要がありUser.msvSDListItemMaster1ます。インスタンス化時に形状を追加したい場合は、 などの別の行を追加する必要がありUser.msvSDListItemMaster2ますUser.msvSDListItemMaster3

最後に、 "Events"セクションの"EventDrop"セルに式を追加する必要があります。ご覧のとおり、ここここで述べたように、カスタム リスト シェイプに追加しました。

挿入形状の指定

リストに形状を追加するには、いくつかの方法があります。形状をドラッグ アンド ドロップする、リストの端近くに表示される青い挿入三角形をクリックする、または既存のメンバーを右クリックして形状を挿入する挿入三角形をクリックすることも、右クリックして図形を挿入することも、User.msvSDListItemMasterセルを使用してリストに追加する図形を決定します。 マスターの名前は、関数内で引用符USE()で囲みます (例: USE("List member master"))。User.msvSDListItemMasterで形状が指定されていない場合、Visio は、形状を挿入するときにリスト内の隣接する形状を複製します。

リストが最初にページにドロップされたときに、一部のメンバー形状をリストに自動的に入力することもできます。これを行うには、次の式をリストのEventDropセルに入力し、DOCMD(2270)追加するメンバーごとに 1 回繰り返します。

IF(LISTMEMBERCOUNT()=0,DOCMD(2270)+DOCMD(2270)+DOCMD(2270),0)

2270リスト ( visUiCmds.visCmdListInsertBefore) 内のアイテムの前に挿入するためのコマンドです。2271リスト内の項目の後に挿入するコマンド ( )を使用することもできますvisUiCmds.visCmdListInsertAfter

問題は2270数です。なぜうまくいかないのかわかりません。しかし、 UML Stencil の Class Master Shape の"Events"セクションで上記のセルを確認すると、 の代わりにが使用されていることがわかりました。24992270そこで、その数値を数式に使用したところ、うまくいきました。行に複数の形状がある場合は、形状 1 の後にすべての形状をUser.msvSDListItemMaster[Index]追加する必要があり+DOCMD(2499)


3番目の質問の答え:

1問目の問題を解けばこの問題は解けます。


4番目の質問の答え:

1問目の問題を解けばこの問題は解けます。ここここで述べたように:

コントロール リスト メンバーシップ

リストには、リストのメンバーシップを管理するための独自のセルがあります。およびセルを使用して、リスト メンバーになることができる図形を制限します。User.msvSDListRequiredCategoriesUser.msvSDListExcludedCategories リストはコンテナーでもあるため、図形がリストのコンテナー メンバーになる可能性があります。この動作は、標準User.msvSDContainerRequiredCategoriesUser.msvSDContainerExcludedCategoriesセルによって決まります。 既定では、Visio は図形をリスト メンバーとしてリストに追加しようとしますが、失敗した場合はコンテナー メンバーとして追加しようとする場合があります。 リスト メンバーとコンテナー メンバーの違いは、リスト メンバーのみがリストによって配置され、そのサイズに影響することです。形状の設計者は、正しい結果を得るために、メンバーシップ セルの両方のセットを管理する必要があります。

最高の効率を得るにUser.msvSDListRequiredCategoriesは、とUser.msvSDContainerRequiredCategories行の両方を使用することをお勧めします。


5番目の質問の答え:

1問目の問題を解けばこの問題は解けます。


6番目の(最終)質問の答え:

答えは(ここここ):

カスタム リスト

"List"セルの値がの図形は、User.msvStructureTypeVisio によってリストとして扱われます。 リストは、メンバーの形状を自動的に並べ替えます。 リストもコンテナーと見なされ、メンバー形状の自動移動、コピー、または削除などの同様の機能を備えていることに注意してください。前述のコンテナ セルはすべてリスト シェイプに適用されます。

表 1. シェイプシート コンテナーのプロパティ

User.msvSDContainerMargin

      The distance between the container boundary and member shapes.

User.msvSDContainerResize

      The automatic-resize behavior for the shape:
  • 0 = 自動サイズ変更なし。

  • 1 = 必要に応じて拡張します。

  • 2 = 常に内容に合わせます。

User.msvSDContainerStyle

      A one-based index value for the current visual style of the container.

User.msvSDContainerStyleCount

      The total number of visual styles that the container supports.

User.msvSDHeadingStyle

      A one-based index value for the current visual style of the container heading.

User.msvSDHeadingStyleCount

      The total number of visual styles that the container heading supports.

User.msvSDContainerLocked

      A Boolean value that prevents membership changes in the container.

User.msvSDContainerRequiredCategories

      A semicolon-delimited list of category names. Other shapes must have at least one matching name to be allowed as container members.

User.msvSDContainerExcludedCategories

      A semicolon-delimited list of category names. Other shapes with at least one matching name are disallowed as container members.

User.msvSDContainerNoHighlight

      A Boolean value that suppresses the container highlighting when member shapes are selected or added to the container.

User.msvSDContainerNoRibbon

      A Boolean value that hides the Container Tools contextual tab in the ribbon for this container.

User.msvSDContainerHeadingEdge

      A string that designates the location of the interior of the container from the perspective of the container heading. Must be "Left", "Right", "Top", or "Bottom".

User.msvSDMembersOnHiddenLayer

      A Boolean value that determines whether Visio severs container relationships when the container or member is placed on a hidden layer. If True, Visio allows relationships to exist on the hidden layer. If False, Visio severs the relationships.
于 2015-06-19T12:31:09.717 に答える