字符串网格中的单元格的循环和增加的字母值

时间:2012-08-06 09:29:05

标签: delphi

所以这可能很难解释,但我想做一个...:= 1到10做声明,但我希望它是为A到N做。这种例外的主要目的是将数据加载到字符串网格中。因此,让它加载单元格0,1 0,2 0,3 0,4 0,5 0,6 0,7,字母A,B,C,D,E一直到14。如果有人知道的话如何做到这一点,我将非常感激!

3 个答案:

答案 0 :(得分:6)

在这里你得到了它,但我不确定它是否是学习编程的好方法(我的意思是将问题作为请求,以便其他人为你编写代码):

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
begin
  StringGrid1.FixedCols := 1;
  StringGrid1.ColCount := 15;
  for I := 1 to 14 do
    StringGrid1.Cells[I, 1] := Chr(Ord('A') + I - 1);
end;

答案 1 :(得分:1)

如果要一次填充一行StringGrid控件,可以执行

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  StringGrid1.FixedCols := 1;
  StringGrid1.FixedRows := 1;
  for i := 0 to Min(25, (StringGrid1.ColCount-1) * (StringGrid1.RowCount-1)) do
    StringGrid1.Cells[i mod (StringGrid1.ColCount - 1) + 1,
      i div (StringGrid1.ColCount - 1) + 1] := Chr(Ord('A') + i);
end;

无论有多少行和列都可以使用。

答案 2 :(得分:0)

想要将TLama的答案融合在一起“想要做一个......:= 1到10做声明,但我希望它能为A到N做”

不知道这是不是双关语,还是启发。

var c: char; i: integer;
    s: string;  
    ...
  i := 0; s:= EmptyStr;
  for c := 'A' to 'N' do begin
      s := s + c + ',';
      Inc(i);
  end;

  SetLength(s, Length(s) - 1); // we do not need last comma there
  StringGrid1.ColCount := i;
  StringGrid1.Rows[0].CommaText := s;

使用TStringBuilder也是如此 - 这比在每次新的字符串修改时重新安排Heap要快。

uses SysUtils;
    ...
var c: char; i: integer;
    s: string;
    ...
  i := 0;
  with TStringBuilder.Create do try
     for c := 'A' to 'N' do begin
         Append(c + ',');
         Inc(i);
     end;
     s := ToString;
  finally 
     Free;
  end;

  SetLength(s, Length(s) - 1); // we do not need last comma there
  StringGrid1.ColCount := i;
  StringGrid1.Rows[0].CommaText := s;