我的程序如下,stringgrid的列数固定,行数可变大或小.可是不论怎么变行数只能显示5行,后面的内容无法显示,请给个解决方法,谢谢,成功就给分!
procedure TForm1.Button1Click(Sender: TObject);
var
  i:string;
  a:array of array of string;
  k,j:integer;
begin
  i:=edit1.Text;
  stringgrid1.RowCount:=strtoint(i);
  stringgrid1.ColCount:=5;
  a:=nil;
  setlength(a,strtoint(i),5);
  for k:=0 to strtoint(i)-1 do
    for j:=0 to 4 do
    begin
      a[k,j]:=inttostr(k)+inttostr(j);
      stringgrid1.Cells[k,j]:=a[k,j];
    end;
    edit2.Text:=stringgrid1.Cells[k-1,j-1];
    StringGrid1.Invalidate;
end;

解决方案 »

  1.   

    StringGrid1.RowCount=i;
    i是你想要的行数。
      

  2.   

    stringgrid1.Cells[k,j]:=a[k,j];
    其中J代表行
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    StringGrid1.ColCount:=i; //列数
    StringGrid1.RowCount:=j;  //行数
    end;
      

  4.   

    你把列和行搞反了
    var
      i:string;
      a:array of array of string;
      k,j:integer;
    begin
      i:=edit1.Text;
      stringgrid1.RowCount:=strtoint(i);
      stringgrid1.ColCount:=5;
      a:=nil;
      setlength(a,5,strtoint(i));
      for k:=0 to strtoint(i)-1 do
        for j:=0 to 4 do
        begin
          a[j,k]:=inttostr(k)+inttostr(j);
          stringgrid1.Cells[j,k]:=a[j,k];
        end;
        edit2.Text:=stringgrid1.Cells[j-1,k-1];
        StringGrid1.Invalidate;
    end;
      

  5.   

    xiaoxiao197821(你的笑对我很重要) 谢谢你,你是对的,不过再问一下,数组不是这样的吧,他的下标是先行后列的吧?
      

  6.   

    sorry上面那个有点问题你把strinhgrid.cells[Col, Row] 中列和行搞反了
    var
      i:string;
      a:array of array of string;
      k,j:integer;
    begin
      i:=edit1.Text;
      stringgrid1.RowCount:=strtoint(i);
      stringgrid1.ColCount:=5;
      a:=nil;
      setlength(a, strtoint(i), 5);
      for k:=0 to strtoint(i)-1 do
        for j:=0 to 4 do
        begin
          a[k,j]:=inttostr(k)+inttostr(j);
          stringgrid1.Cells[j,k]:=a[k,j];
        end;
        edit2.Text:=stringgrid1.Cells[j-1,k-1];
        StringGrid1.Invalidate;
    end;