使用TStringGrid显示字符时,内容过长可设置自动换行。在TStringGrid的OnDrawCell中添加如下代码:
    Canvas.FillRect(Rect);
    S := Cells[ACol,ARow];
    R := Rect;
    DrawText(Canvas.Handle,PChar(s),Length(s),r, DT_WORDBREAK or DT_CENTER  ); 
结果自动换行后,行高没有改变,导致字符无法完全显示!

解决方案 »

  1.   

    我不是很明白你的意思,可以 show 哈实现的代码吗?
    现在我的StringGrid中显示的是从数据库中读取的未知长度的字符串。
      

  2.   

    先用Canvas.TextWidth() 测试在指定字体大小你的字串显示需要多大宽度最好写个函数格式化要显示的字串,在恰当位置插入换行符然后在显示时用   Canvas.TextHeight() 测试要显示的字串高度(即行数)用这个高度不断更行 列表组件的行高,以占“高度”的字串高作为整个组件每行的高度这个组件好像没法做到一行高一行矮
      

  3.   

    这个应该也是在 OnDrawCell事件中实现吧?
    我先试试看!
    先谢啦!