如何让StringGrid中某个Cell的字符串显示成多行

fangjm 2005-12-15 02:42:17
如何让StringGrid中某个Cell的字符串显示成多行,我对Grid进行赋值:StringGrid1->Cells[2][2] ="第一行 \r 第二行"; 可是显示出来的时候整个字符串还是在一行里阿,(但编辑的时候是显示两行),该怎么样才能让他显示成两行呢?
...全文
210 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fangjm 2005-12-15
  • 打赏
  • 举报
回复
还有没有其它的方法,大家都说来看看,这个贴子先等两天再结。
fangjm 2005-12-15
  • 打赏
  • 举报
回复
对于这个问题,除了OnDrawCell事件外还有其它解决办法吗?
fangjm 2005-12-15
  • 打赏
  • 举报
回复
看了 tompkins2000(AirHunter)给的提示,暂时解决了,我把抄到的代码贴出来:

void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{//用来画出文字输出 如果字符串里面有/n的 应该分行
TCanvas *cv = StringGrid1->Canvas;
TRect r = Rect; r.left++; r.top++; r.right--; r.bottom--;

String S1,S2,S=StringGrid1->Cells[ACol][ARow];
int pos = S.Pos("\n");
if(pos==0) cv->TextRect(r,r.Left+1,r.Top+(r.Height()-cv->TextHeight(S))/2,S);
else {
S1 = S.SubString(1,pos-1);
cv->TextRect(r,r.Left+2,r.Top+1,S1);
S2 = S.SubString(pos+1,S.Length()-pos);
r.top += cv->TextHeight(S1)+2;
cv->TextRect(r,r.Left+1,r.Top,S2);
}
////////

}
//输出
代码
StringGrid1->Cells[1][1]="fffffffffffffffffffff+\n换行ffffffffffffffffffffffffff";
//用来测试输出的

//---------------------------------------------------------------------------
ccrun.com 2005-12-15
  • 打赏
  • 举报
回复
依我看,用自画吧。在OnDrawCell事件中写代码。
constantine 2005-12-15
  • 打赏
  • 举报
回复
一般自己textout出来
要不你用\n\r
看看
空中猎手 2005-12-15
  • 打赏
  • 举报
回复
http://search.csdn.net/expert/topicview1.asp?id=1138689

604

社区成员

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

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