Question

I've seen this question asked as part of another question before, so know it can't just be me...if I open a new FireMonkey2 HD app, add a TButton and TStringGrid, then add this to the button on click event, NOTHING happens in the grid when I click the button!

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;    

Any ideas ? PS I've also tried using TStringGrid.OnGetValue and it still won't show anything in the StringGrid.

Having looked further into the TStringGrid source code, C is nil so the Cells are never being set.

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;

I appears there are no Columns in the "virgin" StringGrid, so how do you add them ? There is a r+w RowCount property but ColCount is readonly...

Was it helpful?

Solution

You must add at least a column to the TStringGrid in order to add data to the cells, you can do this in runtime

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

or in design time using the Items Designer

enter image description here

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top