我想问的是: 比如一个3行3列的表格, stringGrid或是什么的吧,  当较多的文字填充到一个格子里,比如第二行,第二列的格子里, 想让那个格子随着文字的多少自动撑起来, 就是把文字都显示出来,让我们能一眼看见.  有没有这种控件, 或是对现有的控件怎么稍微改造一下呀??   

解决方案 »

  1.   

    这个的确是delphi应用 难得 不如html的地方。程序自动设置各个格子的高、宽,不容易啊
    相当于程序实现了ie的html渲染器的表格的部分功能
      

  2.   

    请问楼上
    ExpressVerticalGrid 3.0.1 
    控件是cx控件吧,他可以实现上面的需求吗?
    或者ExpressPrinting System 3.0.2 
    ExpressVerticalGrid 3.0.1 
    ExpressQuantumTreeList 4.0.1 
    ExpressLayout Control 1.1.10 
    ExpressDBTree 1.3.2 
    ExpressMemData 1.8.2 
    ExpressOrgChart 1.3.2 
    ExpressFlowChart 1.3.2 
    ExpressPrinting System 2.5.2 
    ExpressSpreadSheet 1.1.10 
    ExpressWeb Framework 1.6 
    ExpressQuantumGrid 4.5.2 
    ExpressNavBar 1.2.1 
    ExpressPageControl 2.1.2
    ExpressBars 5.1.2 哪个能实现上面的需求呀?
      

  3.   

    cxVerticalGrid都是横着显示的,字段横着显示, 能像一般的grid竖着显示吗?excel: 如果不装office能用吗?
      

  4.   

    终于找到了一个办法,重汇表格:
    procedure TFrmInterFace.YxAdvSGrid1DrawCell(Sender: TObject; ACol,
      ARow: Integer; Rect: TRect; State: TGridDrawState);
    var
      s:string;
      q:Integer;
      DrawRect:TRect;
    begin
      S:=YxAdvSGrid1.Cells[ACol,ARow];
      if (Length(S)>0)Then
      begin
        DrawRect:=Rect;
        DrawText(YxAdvSGrid1.Canvas.Handle,PChar(S), Length(PChar(S)),DrawRect,DT_CALCRECT or DT_WORDBREAK or DT_LEFT);
        If (DrawRect.Bottom-DrawRect.Top) > YxAdvSGrid1.RowHeights[ARow] Then
          YxAdvSGrid1.RowHeights[ARow]:=DrawRect.Bottom-DrawRect.Top
        else
        begin
          DrawRect.Right:=Rect.Right;
          YxAdvSGrid1.Canvas.FillRect(Rect);
          DrawText(YxAdvSGrid1.canvas.handle,PChar(S), Length(PChar(S)),DrawRect,dt_wordbreak or dt_left);
        end;
      end;
    end;易用性代码:procedure TYxAdvSGrid.WMLButtonDown(var Msg: TWMLButtonDown);
     if aRow<>0 then
      begin
        if GetComponentByACol(aCol,Component)=True then
        begin
          if (Component is TTntRichEdit) then
          begin
            if  (Component as TTntRichEdit) <>NIL then
            begin
               (Component as TTntRichEdit).BringToFront;
               (Component as TTntRichEdit).SetFocus;
            end;
          end;      
        end;
      end;