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