如何更新Delphi XE3,Firemonkey2中的TStringGrid单元格

时间:2012-11-09 14:25:45

标签: delphi firemonkey delphi-xe3

之前我已经看到这个问题作为另一个question的一部分被问到了,所以知道它不能只是我...如果我打开一个新的FireMonkey2 HD应用程序,添加一个TButton和TStringGrid,然后将其添加到click事件的按钮上,当我点击按钮时,网格中没有发生!

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为零,因此Cell永远不会被设置。

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是只读...

1 个答案:

答案 0 :(得分:5)

您必须至少向TStringGrid添加一列才能向单元格添加数据,您可以在运行时执行此操作

StringGrid1.AddObject(TStringColumn.Create(Self)); 

或在设计时使用项目设计器

enter image description here