[Lazarus] TStringGrid.AutoSizeColumns leads to temporary ghost columns

Jürgen Hestermann juergen.hestermann at gmx.de
Sun Oct 23 16:54:34 CEST 2011


cobines schrieb:
> If you have a way to reproduce you should create a small project and
> make a report to the bugtracker.
>   
I have narrowed it down as far as I could now.

My form contains a simple TStringGrid.
ColCount is 3 and RowCount is 1 on startup (in object inspector).
On Click the procedure "Start" is launched:

------------------------------------------------------------
procedure TForm1.Start(Sender: TObject);
var i,j  : LongInt;

begin // TForm1.Start
Grid.Clear;
for j := 1 to 5 do
   begin
   with Grid do
      begin
      RowCount := RowCount+1;
      Cells[0,Grid.RowCount-1] := 'XXXX '+IntToStr(j);
      end;
   for i := 1 to 3 do
      begin
      if Grid.Cells[1,Grid.RowCount-1]='' then
         begin
         Grid.Cells[1,Grid.RowCount-1] := 'Test in 1';
         Grid.Cells[2,Grid.RowCount-1] := IntToStr(i);
         end
      else
         begin
         //StringGridAddRow(Grid,Grid.RowCount);
         with Grid do
            begin
            RowCount := RowCount+1;
            Cells[1,Grid.RowCount-1] := 'New in 1';
            Cells[2,Grid.RowCount-1] := IntToStr(i);
            end;
         end;
      Application.ProcessMessages;
      end;
   end;
Grid.AutoSizeColumns;
end; // TForm1.Start


procedure TForm1.GridPrepareCanvas(Sender : TObject; aCol,aRow : 
Integer; aState : TGridDrawState);
var MyTextStyle : TTextStyle;

begin // TForm1.GridPrepareCanvas
if (aCol=2) or (aCol=0) then
   begin
   MyTextStyle           := Grid.Canvas.TextStyle;
   MyTextStyle.Alignment := taRightJustify;
   Grid.Canvas.TextStyle := MyTextStyle;
   end;
end; // TForm1.GridPrepareCanvas
------------------------------------------------------------

The ghost column only appears if all rows and columns fit within the 
window for "Grid".
If I leave out the "GridPrepareCanvas" the ghost column still appears 
but without content.
If I leave out the "Application.ProcessMessages" the ghost column does 
not appear at all.

Anybody else who can reproduce it with the code above?





More information about the Lazarus mailing list