我用dbgrideh,我想把一列的宽度固定,这一列的字符一行显示不全时,自动换行,请问怎么实现

解决方案 »

  1.   

    我曾经看过一个VB程序里,好想用到这样的控件。
    Delphi里,我一直没有找到
      

  2.   

    把OptionsEh的dghFitRowHeightToText设置为True看看
      

  3.   

    我也试了,的确不行,呵呵
    我用过的第三方控件中,TdxDBGrid可以做到这样的效果
      

  4.   

    TdxDBGrid的OptionsView的edgoRowAutoHeight属性设置了之后就可以达到这样的效果
      

  5.   

    你可以在DBGridEh的OnDrawColumn事件里自己写重绘代码:
    var
      Drect:TRect;
    begin
      if Column.FieldName='字段名' then
      begin
        Drect := rect;
      DrawText(dbgrideh1.Canvas.Handle,pchar(Column.Field.AsString),length  (Column.Field.AsString),rect,DT_WORDBREAK)  
       //dt_wordbreak是换行标记
      end;
    end;
      

  6.   

    DrawText是Windows的API函数,上面的
      DrawText(dbgrideh1.Canvas.Handle,pchar(Column.Field.AsString),length  (Column.Field.AsString),rect,DT_WORDBREAK)  
    请改成:
      DrawText(dbgrideh1.Canvas.Handle,pchar(Column.Field.AsString),length  (Column.Field.AsString),Drect,DT_WORDBREAK)  
      

  7.   

    to yczyk(有鬼:泪眼问花花不语,乱红飞过千秋去) 
    可是行高不变,折行后第二行只显示上半个字,这怎么办?
      

  8.   

    to yczyk(有鬼:泪眼问花花不语,乱红飞过千秋去):
    这种方式的话如何控制行高(因为不知道到底要多高)?