TableCreate Action 문의입니다.

안녕하세요? 웹한글기안기로 Table을 만드는 코드를 작성해 보려고 하는데, 잘 되지 않아 문의 드립니다.

열과 행을 인자로 받아 셀의 사이즈를 조절하고, 글자처럼 취급되는 테이블을 만들고자 다음과 같은 코드를 만들었습니다.

const act = hwpCtrl.CreateAction(‘TableCreate’);
const set = act.CreateSet();

// 이 라인을 추가하면 테이블 셀의 ColWidth 설정이 날아가버립니다.
act.GetDefault(set);

act.SetItem(‘Cols’, 2);
act.SetItem(‘Rows’, 1);

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

colset.SetItem(0, 2000);
colset.SetItem(1, 30000);
rowset.SetItem(0, 1);
tablePropSet.SetItem(‘TreatAsChar’, 1);

act.Execute(set);

상세 질문 내용입니다.

  1. act.GetDefault(set)을 추가하면 테이블 셀에 설정한 너비 정보가 무시되어 버립니다. (그냥 반반 나뉘어진 테이블이 만들어집니다.)

  2. act.GetDefault(set)을 추가하지 않으면 tablePropSet을 set.CreateItemSet(‘TableProperties’, ‘Table’)로 생성해야 하는데, 이렇게 해도 테이블 셀에 설정한 너비 정보가 무시되어 버립니다.

OCX에서는 잘 작동하던 기능인데, 어떻게 해야 되는지 알려주시면 감사하겠습니다.

2개의 좋아요

1.

act.SetItem(‘Cols’, 2);
act.SetItem(‘Rows’, 1);

위 두 줄은 아마

set.SetItem(‘Cols’, 2);
set.SetItem(‘Rows’, 1);

로 실행하신 거 맞지요?ㅎ

2.

아래처럼 너비 지정 옵션을 "임의 값"인 2로 주셔야 열 너비가 적용됩니다.

set.SetItem('WidthType', 2);

녹화_2024_02_21_01_30_38_306

3.

act.GetDefault(set) 명령어는 설정을 날려버리는 명령어가 아니고
현재 한/글 문서의 (최근) 설정값으로 set을 채우는 명령어입니다.
모든 값을 직접 일일이 설정하실 거면 GetDefault를 실행하지 않으셔도 됩니다.

4.

“글자처럼 취급” 옵션은 표 생성 후에, 적용하셔야 합니다.
생성 직후에는 캐럿이 표 안에 있으므로
ParentCtrl.Properties의 “TreatAsChar” 속성을 1로 바꾸셔도 되고,
기존처럼 다시 CreateAction을 하셔도 되겠습니다.

녹화_2024_02_21_01_45_12_351

도움이 되었기를 바랍니다.

3개의 좋아요

안녕하세요.

@user16 님께서 말씀해주신것 처럼

“WidthType” 지정이 되지 않아 임의값 적용이 되지 않았습니다.

아래와 같이 적용하시면 될것 같습니다.

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개의 좋아요