머리말 제거 가능한가요?

안녕하세요.

혹시 머리말도 제거가 가능한가요?

가이드문서를 보다보니 아래와 같은 방식으로 컨트롤을 삭제하는 방법이 있던데 조건을 ctrl.CtrlID == "head"로 바꾸고 사용해봤는데 정상적으로 동작을 안하더라고요…

var ctrl = HwpCtrl.HeadCtrl;

while(ctrl != null) {
if(ctrl.CtrlID == “tbl”){
HwpCtrl.DeleteCtrl(ctrl);
}
ctrl = ctrl.Next;
}

1개의 좋아요

안녕하세요 ^^
웹한글 기안기 예제 페이지에서 DeleteCtrl시 머리말 정상적으로 삭제됨을 확인해볼수 있었습니다.
혹시 삭제하고 삭제된 컨트롤에 대해서 Next 호출시 API 동작 오류가 발생할수도 있을것 같은데 아래와 같이 딜리트 후 Break; 처리 등으로 예외처리를 해보면 어떨까 싶습니다 ^^

var ctrl = HwpCtrl.HeadCtrl;

while(ctrl != null) {
  if(ctrl.CtrlID == "head"){
  HwpCtrl.DeleteCtrl(ctrl);
  break;
}
ctrl = ctrl.Next;
}

감사합니다.

1개의 좋아요

안녕하세요.

알려주신대로 break;를 넣고 진행을 해보니 삭제가 되긴 되는데,
바로 삭제되지않고 버튼을 4번 정도 눌러야 삭제가되네요… 혹시 해결방법이 있을까요?

그리고 추가로 머리말을 생성하는 방법도 있나요??

안녕하세요,
제가 알기론 API가 정상적으로 동작하지 않는 이슈의 경우는 코드에서 오류가 있을시 실행이 안되는 경우가 있습니다 …
전체 소스를 한번 점검 해보면 좋을것 같습니다.

위의 코드도 break; 안할시 Delete컨트롤 하면 해당 컨트롤에대해 null 이되는데 Next API호출에서 오류가 발생하기 떄문에 삭제가 되지 않고 스크립트 코드 자체가 동작을 안한것으로 보입니다.

감사합니다 :slight_smile:

안녕하세요.
머리말을 생성하는 코드 예제입니다.

var dact = HwpCtrl.CreateAction("HeaderFooter");
var dset = dact.CreateSet();
dact.GetDefault(dset);
dset.SetItem("HeaderFooterStyle", 0);
dset.SetItem("HeaderFooterCtrlType", 0);
dact.Execute(dset);