TableCreation의 WidthValue와 HeightValue 설정 관련

TableCreation의 WidthValue와 HeightValue의 값을 설정하여도 반영되지 않습니다.
WidthType과 HeightType을 각각 임의값을 설정하도록 2와 1로 지정한 후에 WidthValue와 HeightValue에 여러가지 값을 입력해보았으나 동작하지 않습니다.

var act = HwpCtrl.CreateAction("TableCreate");
var pset = act.CreateSet();
if (pset.IsSet) {
    act.GetDefault(pset);
    pset.SetItem("Rows", 1);
    pset.SetItem("Cols", 1);
    pset.SetItem("WidthType", 2);
    pset.SetItem("HeightType", 1);
    pset.SetItem("WidthValue", 100);
    pset.SetItem("HeightValue", 50);
    act.Execute(pset);
}

tablecreate

2개의 좋아요

@hdev,
웹한글기안기쪽으로 문의 내용 같아서 카테고리를 변경하도록 하겠습니다.
감사합니다.

2개의 좋아요

안녕하세요.

각 cell 별 width, height 를 지정해줘야 합니다.

다음 예제 참고해주세요.

const act = HwpCtrl.CreateAction('TableCreate');
const set = act.CreateSet();

act.GetDefault(set);

set.SetItem('WidthType', 2);
set.SetItem('HeightType', 1);

set.SetItem('Cols', 2);
set.SetItem('Rows', 1);

const colset = set.CreateItemArray('ColWidth', 2);
const rowset = set.CreateItemArray('RowHeight', 1);
const tablePropSet = set.Item('TableProperties');

colset.SetItem(0, 3000);
colset.SetItem(1, 20000);
rowset.SetItem(0, 1);
tablePropSet.SetItem('TreatAsChar', 1);

act.Execute(set);
2개의 좋아요

설명 감사합니다. 다만, ColWidth와 RowHeight를 이용하는 방법은 저도 알고 있는 내용입니다.
보다 간결한 코드를 작성하기 위해 WidthValue와 HeightValue를 이용해보려 했으나 잘 안되어 문의드렸던 것입니다.
제가 몇가지 실험을 통해 내린 결론은 다음과 같습니다. 제 추측이 잘못되었으면 바로 잡아주시면 감사하겠습니다.

WidthValue와 HeightValue는 TableCreate Action이 사용하는 Parameter가 아니다

그렇게 판단한 이유는 아래와 같습니다.

표만들기 다이얼로그에서 크기 지정의 너비, 높이를 임의값으로 설정한 후 값을 지정한 후 만들기 버튼을 누르면 테이블의 너비와 높이가 고정되며 각 셀의 크기는 너비/칸 개수, 높이/줄 개수로 설정됩니다. 하지만, 매크로 기록 상태에서 표만들기를 누르면 표만들기 다이얼로그가 표시되지 않고 즉시 테이블이 생성됩니다. 이는 표만들기 다이얼로그에서의 동작은 매크로로 기록될 수 없다는 것을 의미합니다.

이는 표만들기 다이얼로그의 기능은 아래한글 프로그램에서 지원하는 기능이며 TableCreate Action에서 직접 지원하는 기능이 아니라는 의미입니다. 따라서, WidthValue와 HeightValue는 TableCreatoin ParameterSet에는 존재하는 Item이지만 TableCreate Action이 사용하기 위한 Item이 아니라 아래한글 Application에서 표만들기 다이얼로그에서 사용자가 지정한 값을 저장하기 위한 Item으로 보입니다.
그렇기 때문에 아래한글 Application의 표만들기 다이얼로그에서 너비와 높이에 임의값을 지정하면 자동으로 너비/칸 개수, 높이/칸 개수로 각 셀의 너비와 높이가 균등하게 자동설정되지만, 스크립트 매크로에서는 WidthValue와 HeightValue를 설정한 후 TableCreate Action을 실행하여도 표만들기 다이얼로그처럼 동작하지 않는 것입니다.
따라서, 표만들기 다이얼로그와 동일한 기능을 스크립트 매크로로 구현하려면 CreateItemArray로 ColWith와 RowHeight를 지정하여야 합니다.

결론적으로 표만들기 다이얼로그는 전체 테이블의 높이와 너비를 지정하면 줄과 칸의 갯수로 나눈 값으로 각 셀의 너비와 높이가 자동으로 지정되지만, 매크로 코드에서는 각 셀의 높이와 너비를 직접 지정하여야 한다는 점이 다릅니다. 물론 각 셀의 너비와 높이가 균등할 경우 ItemArray는 첫번째 (index 0)만 설정하면 줄,칸 개수와 상관없이 모두 동일하게 지정되기 때문에 반복문을 이용하여 모든 줄/칸의 너비와 높이를 지정하지 않아도 되므로 코드가 그렇게 까지 복잡해지지 않아 다행이라 생각합니다.

2개의 좋아요