2012-09-11 3 views
0

사용자가 모양 쌍을 만들 수있는 PowerPoint 2010 추가 기능을 작성했습니다. 이 쌍은 동기화됩니다 (예 : 위치, 색상, 텍스트 ...). 쌍은 다음 클래스의 객체로 저장됩니다 Shape를이 수정제목 마스터에서 자리 표시자를 찾는 방법은 무엇입니까?

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

경우, 모양을 포함 한 쌍의가있는 곳에, 다른 형태가 업데이트됩니다.

마스터 레이아웃에 쌍을 정의 할 수 있습니다. 동기화는 마스터에서 작동합니다. 쌍이 두 개의 자리 표시 자로 만들어져 있고 마스터를 기반으로 슬라이드를 만드는 경우 물론 새 모양이 동기화되지 않습니다. 도형의 마스터를 찾을 수있는 방법이 있습니까? 이 알고리즘은 다음과 같다 : 나는 새로운 형태의 NameId 특성을 살펴했다

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 

. 그러나 그들은 마스터 형태의 속성과 다릅니다.

Btw, 모양이 자리 표시자인 경우 확인하는 좋은 방법이 있습니까? 내 현재 접근 방식은 모양이 자리 표시자인 경우 PlaceholderFormat에 예외를 throw하는 쿼리입니다. 그러나 이것은 확실히 좋은 방법이 아닙니다.

+0

이것은 내가 VBA에서 가지고있는 한, VSTO와 매우 유사 할 것이다. http://stackoverflow.com/questions/2061303/get-layout-shape-corresponding- 슬라이드 모양/2066122 –

답변

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 태그 값이 첫 번째 모양의 태그 값과 일치하는지 확인합니다.

+0

* * Steve Rindsberg? 단 1 점입니까? SO에 오신 것을 환영합니다! 나는 당신에게 당신의 첫 번째 포인트를주게되어서 영광입니다! +1 :-) –

+0

태그 사용에 대해 이미 생각했습니다. 태그가 마스터 슬라이드에서 일반 슬라이드로 복사되고 있습니까? –

+0

Nico, no, 태그는 마스터 슬라이드에서 일반 슬라이드로 복사되지 않습니다. 다른 한편으로, 나는 그들이 왜 존재해야하는지 알지 못한다. 코드 쌍에 도형 쌍을 만드는 경우 생성 된 시점에 도형에 "태그"를 지정할 수 있습니다. –

관련 문제