某列宽是定长,那如何实现,当一行中该列的数据长度超过该列宽时让它换行。
???????

解决方案 »

  1.   

    控件选得不对。 
    你可以选StringGrid
      

  2.   

    呵呵
    这个要求并不变态
    很正常向CSDN的问题列表这样的效果
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      Str: String;
    begin
      Str := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
      StringGrid1.Cells[1, 1] := Str;
    end;procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
    var
      ARect: TRect;
      Str, TempStr, SubStr: String;
      I: Integer;
    begin
      with StringGrid1 do begin
        Str := Cells[ACol, ARow];
        if Length(Str) = 0 then exit;    TempStr := '';
        SubStr := '';
        ARect := Rect;
        for I := 1 to Length(Str) do begin
          if Canvas.TextWidth(TempStr + Str[I]) + 2 >= ColWidths[ACol] then begin
            Canvas.TextOut(ARect.Left + 2, ARect.Top, TempStr);
            TempStr := '';
            ARect.Top := ARect.Top + Canvas.TextHeight('A') + 2;
          end;
          TempStr := TempStr + Str[I];
        end;    Canvas.TextOut(ARect.Left + 2, ARect.Top, TempStr);
      end;
    end;大致就这样吧
    你自己再改改
    TListView中处理方式类似