资源管理器中,当列宽度不足以显示该列的字符串时,超长的字符串就会显示部分,结尾以...省略号显示请问我用StringGrid显示的时候如何达到这个效果,或者有什么系统函数可以返回指定宽度的略写?
不要自己编函数来实现,因为程序要做到各国通用,其他国家的文字不一定和判断汉字完整一样的

解决方案 »

  1.   

    XP下好像没有这种功能了?
    可能XP对长字符支持比较好
      

  2.   

    看看D2007的TCaption的源码,就带这个功能,而且对路径太长进行的简化也比较智能,比之于省略号太多简化得看不清大概。
      

  3.   

    stringgird的值会改变的喔~~ 且不会变回原来的,如 abcdefgabc 变成 abcdefg... 你愿意吗? 愿意的话我就给代码你
      

  4.   

    狠容易的,自画grid单元格,用drawtext带DT_END_ELLIPSIS标记画字符串即可
      

  5.   


    procedure TForm1.Button23Click(Sender: TObject);
    var
      ACol,ARow: integer;
      Str: string;
      R: TRect;
    begin
      for ACol:= 0 to StringGrid1.ColCount - 1 do
        for ARow:= 1 to StringGrid1.RowCount - 1 do
          begin
            Str:= StringGrid1.Cells[ACol,ARow];
            UniqueString(Str);
            R:= StringGrid1.CellRect(ACol,ARow);
            DrawText(StringGrid1.Canvas.Handle, PChar(Str), Length(Str), R,DT_END_ELLIPSIS or DT_MODIFYSTRING );
            StringGrid1.Cells[ACol,ARow]:= Str;
          end;
    end;
    不知道合不合你要求,你试试吧