标题中的多行文本

时间:2013-02-14 10:54:34

标签: c++ mfc grid-layout ultimategrid

我正在进行复杂的网格布局,而UltimateGrid是我的选择。

我设置了多行标题,然后我在垂直标题中加入了一些单元格

现在,我正在寻找一种在我加入的标题单元格中设置多行文字的方法。

这是一个解释性截图。

explanatory screenshot

我已经尝试过写作:

void MyCug::OnSetup(){

int rows = 5;
int cols = 20;

// setup rows and columns
SetNumberRows(rows);
SetNumberCols(cols);

// create 3 row top heading
SetTH_NumberRows(2);

...

JoinCells (16, -2, 16, -1); // Here I joins - in heading - two cells : row 16, columns -2 and -1

...

// Then I retrieve merged cell
CUGCell m_cell;
GetCell(16, -2, &m_cell);

// I need to show multi-line content in heading cells: I tried to set multi-row property.
int result = m_cell.SetPropertyFlags(m_cell.GetPropertyFlags() | UGCELL_MULTIROWCELL);

if (result == UG_SUCCESS) {
    bool ok = true;     // all seems to be ok...
}

m_cell.SetText("string\r\nstring\r\nstring"); // Despite my attempt, this will be always show on a single line!
SetCell(16, -3, &m_cell);

...
}

没有成功:单元格文本总是显示在一行上,这正是我不想要的。

如何在多行上获取单元格文本?

2 个答案:

答案 0 :(得分:0)

我告诉我如何解决我的问题,希望它对某人有用。

要设置多行单元格,应使用成员函数 CUGCell :: SetCellTypeEx()。 此功能允许您设置单个单元格的扩展属性。

以下示例完美无缺:

void MyCug::OnSetup(){

int rows = 5;
int cols = 20;

// setup rows and columns
SetNumberRows(rows);
SetNumberCols(cols);

// create 3 row top heading
SetTH_NumberRows(2);

...

JoinCells (16, -2, 16, -1); // Here i joins - in heading - two cells : row 16, columns -2 and -1

...

// I retrieve merged cell
CUGCell m_cell;
GetCell(16, -2, &m_cell);

cell.SetCellTypeEx(UGCT_NORMALMULTILINE); // set multiline cell

m_cell.SetText("string\r\nstring\r\nstring");

SetCell(16, -3, &m_cell);

}

答案 1 :(得分:0)

OnSetup()方法内:

  1. 设置顶部标题中的行数。
SetTH_NumberRows(2); // Set 2 rows
  1. 将单元格范围合并在一起
JoinCells(1,-2, 1,-1); // Join row -1 and -2 in column 1
  1. 向单元格添加多行功能
QuickSetCellTypeEx(1, -2, UGCT_NORMALMULTILINE); // Column 1, row -2 is a multiline
  1. 添加文字
CString title = _T("New\r\nline");
QuickSetText(1, -2, title); SetColWidth(1, 200); // Set text in the preferred cell