0

ユーザーが図形のペアを作成できるようにするPowerPoint2010アドインを作成しました。これらのペアは同期されます(位置、色、テキストなど)。ペアは、次のクラスのオブジェクトとして保存されます。

class Pair
{
     Shape LeftShape { get; set; }
     Shape RightShape { get; set; }
}

シェイプを含むペアがある場合にシェイプが変更されると、もう一方のシェイプが更新されます。

マスターレイアウトでペアを定義することが可能です。同期はマスターで機能します。ペアが2つのプレースホルダーで構成されていて、マスターに基づいてスライドを作成した場合、もちろん、新しい形状は同期されません。シェイプのマスターに相当するものを見つける方法はありますか?その逆もありますか?その場合、アルゴリズムは次のようになります。

 s1's modification is recognized
 if s1 is a placeholder
     find s1's equivalent in master -> m1
     look up the partner of m1 -> m2
     find the shape in the current slide that is based on m2 -> s2
     update s2

Name新しい形状のとIdプロパティを確認しました。ただし、マスターシェイプのプロパティとは異なります。

ところで、図形がプレースホルダーであるかどうかを判断するための良い方法はありますか?私の現在のアプローチはPlaceholderFormat、図形にプレースホルダーがない場合に、例外をスローするクエリを実行することです。しかし、これは間違いなく良い方法ではありません。

4

1 に答える 1

1

マスターレイアウトでペアを定義することが可能です。

私は興味があります:どうやって?

Shapeの.Typeプロパティは、それがプレースホルダーであるか、その他の形状タイプであるかを示します。

形状がmsoPlaceholder(14)の場合、それはプレースホルダーです。その場合、その.PlaceholderFormat.Typeプロパティは、それがどのタイプのプレースホルダーであるかを示し、複数のタイプのコンテンツを保持できるタイプの場合は、その.PlaceholderFormat.ContainedTypeは、グラフ、オブジェクト、画像が含まれているかどうかを示します。 、など。

代わりに、タグを使用してペアを示すことを検討してください。現在選択されている図形を範囲の例として使用して、図形範囲のメンバーに「タグ付け」するには、次の手順に従います。

Dim oSh As Shape
For Each oSh In ActiveWindow.Selection.ShapeRange
    oSh.Tags.Add "MagicPair", "TagValue"
Next

ペアの残りの半分を返すには、現在のスライドの各図形を調べ、そのMagicPairタグの値が最初の図形の値と一致するかどうかを確認する単純な関数を記述します。

于 2012-09-11T14:54:14.483 に答える