我之前已经看到过这个问题是另一个question的一部分,所以知道它不能只是我...如果我打开一个新的FireMonkey2 HD应用程序,添加一个TButton和TStringGrid,然后将其添加到按钮上单击事件,单击按钮时,网格中什么都没有发生!
procedure TForm33.Button1Click(Sender: TObject);
var
i: Integer;
begin
for i:= 0 to 6 do
begin
StringGrid1.Cells[0,i] := 'Row:' + IntToStr(i);
end;
stringgrid1.UpdateColumns;
stringgrid1.SetFocus;
end;
有任何想法吗 ?
PS我也尝试过使用TStringGrid.OnGetValue,它仍然不会在StringGrid中显示任何内容。
深入研究TStringGrid源代码后,C为零,因此永远不会设置单元。
procedure TStringGrid.SetValue(Col, Row: Integer; const Value: TValue);
var
C: TColumn;
begin
C := Columns[Col];
if Assigned(C) then
begin
C.UpdateRowCount(RowCount);
C.SetCells(Row, Value);
end;
我似乎在“原始” StringGrid中没有列,那么如何添加它们呢?有一个r + w RowCount属性,但ColCount是只读的。
最佳答案
您必须至少在TStringGrid
中添加一列才能将数据添加到单元格,您可以在运行时执行此操作
StringGrid1.AddObject(TStringColumn.Create(Self));
或在设计时使用项目设计器