StringGrid1.Cells[x,y]:=s1+#13#10+s2+#13#10+s3;
在非编辑状态下不能达到换行的效果。即使在编辑状态下,
也只能在CELL得到焦点时才有换行的效果,焦点移开后,又变回一行,
这是为什么?
怎样才能在非编辑状态下得到换行的效果。
谢谢各位赐教!!!

解决方案 »

  1.   

    设一下 stringgrid1 ->options->gotabs=true
    StringGrid1.SetFocus;
    postmessage(StringGrid1.handle,wm_keydown,vk_tab,0);
      

  2.   

    to sunny518 我的表格里不止一个单元格有这样的数据,焦点要在这些单元格间移动,或者你能不能说的详细些,谢谢!to heixiu1980 谢谢你的方法,可是怎样才能将网格线擦掉???谢谢!!
      

  3.   

    啊!我想起来了!
    是设所有的网格没有边界:
    StringGrid1.GridLineWidth:=0;
    然后设中间一些网格的宽度或高度为1,作为新的网格线:)
    StringGrid1.ColWidths[1]:=1;
    StringGrid1.RowHeights[1]:=1;
    比较麻烦,不过可以解决问题
      

  4.   

    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
      Rect: TRect; State: TGridDrawState);
      var tmp:string;
      area:trect;
    begin
     with StringGrid1.Canvas do
        begin
          rect:=stringgrid1.CellRect(acol,arow);
          FillRect(Rect);
          Area := Rect;
          InflateRect(Area, -2, -2);
          tmp:= stringgrid1.Cells[acol,arow];       DrawText(Handle, PChar(tmp),length(tmp),Area, DT_CENTER);
         end;
     end;
    是不是你要得效果
      

  5.   

    to heixiu1980(迷茫ing)  不行吧,,所有网格的边界stringgrid.gridlinewith 只有两种情况
                            要么有边界,要么没有,不能对个别网格的边界进行调整。
                            StringGrid1.ColWidths[1]:=1;  是使第2列的格宽为1,而不是边
                            界宽为1。不过还是谢谢你!!!!!!也许是我不太明白你的意思。    
    to lining_1977(李宁)   非唱感谢!!! 就是我要的效果。我这就给分。