AdvStringGrid populate issue

Hi,

I've been using TMS AdvStringGrid for a few years now and was wondering about a change that I have noticed. I tried several times to debug my application but I can't seem to understand the problem.

When I call a TForm->Show() that has the grid on it and in my code I populate the grid, every thing is fine. The problem is that when I want to clear and repopulate the grid, it seems like the grid is updating visually each col/row it processes. This makes the redraw of big grids very slow and it is an unwanted visual annoyance...

Here is an example of my code:


    // Clear Grid
    ... code

    // Fetch data from DB
    TADOQuery *pQuery = new TADOQuery(NULL);

    pQuery->SQL->Clear();
    pQuery->SQL->Text = sgADOMan->GetSQL( SQLFILE_LOCALES );

    if( sgADOMan->OpenADOQuery( pQuery ) )
    {
        while( !pQuery->Eof )
        {
            grdLocs->Cells[0][grdLocs->Row] = IntToStr( pQuery->FieldByName("Loc_key")->AsInteger );
            grdLocs->Cells[1][grdLocs->Row] = IntToStr( pQuery->FieldByName("Type_key")->AsInteger );
            grdLocs->Cells[2][grdLocs->Row] = IntToStr( pQuery->FieldByName("Loc_val")->AsInteger );

            if( pQuery->FieldByName("Loc_enabled")->AsInteger )
            {
                grdLocs->Cells[3][grdLocs->Row] = "X";
            }

            grdLocs->Cells[4][grdLocs->Row] = pQuery->FieldByName("Loc_eng")->AsString;
            grdLocs->Cells[5][grdLocs->Row] = pQuery->FieldByName("Loc_fra")->AsString;

            grdLocs->RowCount++;
            grdLocs->Row++;
            pQuery->Next();
        }
    }

    pQuery->Close();
    delete pQuery;

    if( grdLocs->RowCount > 2 )
    {
        grdLocs->RowCount--;
    }

    grdLocs->AutoSizeRows( true );
    grdLocs->Row = 1;


There seems to be something like an Application->ProcessMessages() going on somewhere. I've checked and I don't do any of that in that scope. I even tried with a brand new grid without changing any options and it does it anyways. This issue was not happening with version 4.x but now with my current version of 5.8.7.0

Thank you for any help.

Can you try to put the code that performs the update between calls to
grid.BeginUpdate;
// update grid here

grid.EndUpdate;