안녕하세요.
표에 캡션이 있는 경우 그 내용을 가져오기 위해
표에 캡션이 있는지를 판단하는 코드를 먼저 실행해 봤습니다.
그림에서와 같이 가운데 표는 캡션이 없는데도
(보통 이전 표의 값 그대로를) 리턴합니다.
그림의 경우 캡션이 있는지 판단하는게 비교적 수월했는데..
표는 그 방법을 알 수가 없어 요청을 드립니다.
function OnScriptMacro_script16()
{
var myCtrl = HeadCtrl;
while (myCtrl)
{
if (myCtrl.CtrlID == "tbl")
{
SetPosBySet(myCtrl.GetAnchorPos(0));
FindCtrl();
HAction.GetDefault("TablePropertyDialog", HParameterSet.HShapeObject.HSet);
switch(HParameterSet.HShapeObject.ShapeCaption.Side)
{
case SideType("Left"):
XHwpMessageBox.String = "left";
XHwpMessageBox.DoModal();
break;
case SideType("Right"):
XHwpMessageBox.String = "right";
XHwpMessageBox.DoModal();
break;
case SideType("Top"):
XHwpMessageBox.String = "top";
XHwpMessageBox.DoModal();
break;
case SideType("Bottom"):
XHwpMessageBox.String = "bottom";
XHwpMessageBox.DoModal();
break;
}
}
myCtrl = myCtrl.Next;
}
}

1개의 좋아요
안녕하세요
HParameterSet.HShapeObject.HSet은 전역 변수라 계속 재활용 됩니다. SetID가 있을 경우에만 덮어 쓰여지는 구조로 되어 있습니다. 따라서 2번 째 표는 ShapeCaption가 없어서 기존에 있던 ShapeCaption을 가져오게 되어 있습니다.
제 생각에는 해결 방안은 ParameterSet을 변수로 만들어 GetDefault를 하는 방법과
메세지 박스를 띄우는 동작 이후에 HParameterSet.HShapeObject.ShapeCaption.Side 값을 강제로 바꾸면 동작할 것 같습니다.
아래 코드는 HParameterSet.HShapeObject.ShapeCaption.Side 값을 강제로 바꿔서 해봤고 정상동작했습니다. 참고 하시면 좋을 것 같습니다.
감사합니다.
function OnScriptMacro_script16()
{
var myCtrl = HeadCtrl;
while (myCtrl)
{
if (myCtrl.CtrlID == "tbl")
{
SetPosBySet(myCtrl.GetAnchorPos(0));
FindCtrl();
HAction.GetDefault("TablePropertyDialog", HParameterSet.HShapeObject.HSet);
switch(HParameterSet.HShapeObject.ShapeCaption.Side)
{
case SideType("Left"):
XHwpMessageBox.String = "left";
XHwpMessageBox.DoModal();
break;
case SideType("Right"):
XHwpMessageBox.String = "right";
XHwpMessageBox.DoModal();
break;
case SideType("Top"):
XHwpMessageBox.String = "top";
XHwpMessageBox.DoModal();
break;
case SideType("Bottom"):
XHwpMessageBox.String = "bottom";
XHwpMessageBox.DoModal();
break;
}
with (HParameterSet.HShapeObject){
ShapeCaption.Side = 0xFF
}
}
myCtrl = myCtrl.Next;
}
}
2개의 좋아요
설명과 해결 방법 모두 감사드립니다.
알려 주신 방법을 활용하니 잘 됩니다.
1개의 좋아요