(예전 커뮤니티(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 액션은 찾았으나 긴가민가 했었는데
이제 적용해보도록 하겠습니다.
감사~ 감사드립니다.