TableCreate 액션을 이용한 표그리기에서 셀별로 Field 이름을 지정하는 방법 문의

(예전 커뮤니티(2016-2020) 사이트에서 옮겨온 글입니다: 번호 88)

작성자: yhak.joo
날짜: 2018-02-18


여러 가지로 도움에 감사드립니다.

TableCreate 액션을 이용하여 표그리기를 작성하고 있습니다.

제가 원하는 것은

아래의 그림처럼 3 X 5 표에서 각 셀별로 서로 다른 "Field 이름"을

한글 컨트롤에서 부여하고 싶습니다.

표그리기 코딩은 아래와 같습니다.

여기에 어떻게 하면 한글 컨트롤에서 셀별로 Field 이름을 부여할 수 있는지 문의 드립니다.

다시 한번 감사드립니다.

//---

void CPolicyOneDlg::OnBnClickedTablecreation()

{

	const int rowsCnt = 5;

	const int colsCnt = 3;



	CDHwpAction act = m_HwpCtrl.CreateAction(_T("TableCreate"));

	CDHwpParameterSet TableCreationSet = act.CreateSet();

	act.GetDefault(TableCreationSet);



	// TableCreation ParameterSet

	TableCreationSet.SetItem(_T("Rows"), CComVariant(rowsCnt));

	TableCreationSet.SetItem(_T("Cols"), CComVariant(colsCnt));



	CDHwpParameterArray rowsHeight = TableCreationSet.CreateItemArray(_T("RowHeight"), rowsCnt);

	CDHwpParameterArray colsWidth = TableCreationSet.CreateItemArray(_T("ColWidth"), rowsCnt);



	for (long row_i = 0; row_i < rowsCnt; ++row_i)

		rowsHeight.SetItem(row_i, CComVariant((long)(2500)));



	for (int col_i = 0; col_i < colsCnt; ++col_i)

		colsWidth.SetItem(col_i, CComVariant((long)(12340)));





	// Table ParameterSet (TableSet의 상위 계승자인 ShapeObject ParameterSet)

	CDHwpParameterSet TableSet = TableCreationSet.CreateItemSet(_T("TableProperties"), _T("Table"));



	TableSet.SetItem(_T("TreatAsChar"), CComVariant(0));					// off



	TableSet.SetItem(_T("VertRelTo"), CComVariant(0));						// 종이 영역

	TableSet.SetItem(_T("VertAlign"), CComVariant(0));						// 위(Top)

	TableSet.SetItem(_T("VertOffset"), CComVariant((long)(35 * 283.465)));	// 1mm = 283.465 HWPUNITs



	TableSet.SetItem(_T("HorzRelTo"), CComVariant(0));						// 종이 영역

	TableSet.SetItem(_T("HorzAlign"), CComVariant(0));						// 왼쪽(Left)

	TableSet.SetItem(_T("HorzOffset"), CComVariant((long)(30 * 283.465)));	// 1mm = 283.465 HWPUNITs



	act.Execute(TableCreationSet);


}

댓글

hsmun (2018.02.21)

테이블생성을 TableCrate 액션으로 생성하신 후에
TableCellBlock액션으로 표에 진입하시고
행*열 수 만큼 루프를 돌면서
셀필드이름을 지정하시고
TableRightCell로 다음 셀을 루프 돌면 될듯 합니다.

hsmun (2018.02.21)

셀필드이름 지정은

var vAction = vHwpCtrl.CreateAction("TablePropertyDialog");
var vSet = vAction.CreateSet();
vAction.GetDefault(vSet);

var vSubSet;
vSubSet = vSet.Item("ShapeTableCell");
var vCtrlData = vSubSet.Item("CellCtrlData");
vCtrlData.SetItem("Name", vFieldName);
vAction.Execute(vSet);
yhak.joo (2018.02.21)

답변 진심으로 감사드립니다.
매크로를 이용해서 TablePropertyDialog 액션은 찾았으나 긴가민가 했었는데
이제 적용해보도록 하겠습니다.
감사~ 감사드립니다.

1개의 좋아요