关于CB中stringGrid控件单元格中显示多行文字的一个问题

harkmonkey 2008-12-13 10:31:51
我在StingGrid控件的DrawCell事件下调用DrawText函数,代码如下:
DrawText(StringGrid1->Canvas->Handle,
StringGrid1->Cells[ACol][ARow].C_Str(),
StringGrid->Cells[ACol][ARow].Length(),
Rect,
DT_WORDBREAK);
编译时出现错误:E2034 Cannot convert 'TRect' to 'tagRECT'
E2342 Type mismatch in parameter 'lpRect'(wanted 'tagRECT',got 'TRect')
我通过在DrawCell事件下定义RECT *a ;而后通过a->left = Rect.left; a->top = Rect.top; a->right = Rect;right; a->bottom = Rect.bottom;给a复制,在调用
DrawText(StringGrid1->Canvas->Handle,
StringGrid1->Cells[ACol][ARow].C_Str(),
StringGrid->Cells[ACol][ARow].Length(),
a,
DT_WORDBREAK);在运行时出错.
请问如何解决?
如果不行在CB中使用什么表格控件可使单元格中的文本多行显示?
...全文
112 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qqlpp 2008-12-14
  • 打赏
  • 举报
回复
mark
harkmonkey 2008-12-14
  • 打赏
  • 举报
回复
能将具体点么?
harkmonkey 2008-12-13
  • 打赏
  • 举报
回复
我自己解决了把指针a定义成动态的就可以了!
RECT *a = new RECT;
DrawText(StringGrid1->Canvas->Handle,
StringGrid1->Cells[ACol][ARow].C_Str(),
StringGrid->Cells[ACol][ARow].Length(),
a,
DT_WORDBREAK);
delete a;
但是如何使得单元格能根据行数自动调节行宽?
harkmonkey 2008-12-13
  • 打赏
  • 举报
回复
我自己解决了把指针a定义成动态的就可以了!
RECT *a = new RECT;
DrawText(StringGrid1->Canvas->Handle,
StringGrid1->Cells[ACol][ARow].C_Str(),
StringGrid->Cells[ACol][ARow].Length(),
a,
DT_WORDBREAK);
delete a;
但是如何使得单元格能根据行数自动调节行宽?
hnzlk 2008-12-13
  • 打赏
  • 举报
回复
那你自己可以算的嘛。正常情况下能容纳多少字符,一个字符占多大的空间,然后再去调整不就行了。

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧