Frequently Asked Component Specific Questions

Options

Display all FAQ items

Search FAQ items:


Displaying items 1 to 1 of 1, page 1 of 1

<< previous next >>

TMS Advanced Poly List
Update the poly list faster with beginupdate and endupdate

This short article describes the use of BeginUpdate and EndUpdate methods to allow faster updating and repainting.

When creating a poly list with 500+ items in code, it tends to be slow when starting the application.
For each item that is added / deleted or updated, the list is updated. It is just a matter of milliseconds to update the list for one item, but imagine the time that is needed to update 500 items. And these items are drawn with the default layout. With more advanced items the update process can be painfully slow.

Because we cannot predict when the user wants to update the list, we have implemented a BeginUpdate and EndUpdate which *blocks* the painting of the listbox until the EndUpdate is called. Then all the calculations and painting is executed once, with all the new information the user has inserted in the items.
Below is a code sample based on theTAdvPolyList component to update all items between a BeginUpdate and EndUpdate.

var
  i: integer;
begin
  AdvPolyList1.BeginUpdate;
  for I := 0 to AdvPolyList1.ItemCount - 1 do
  begin
    AdvPolyList1.Items[i].Height := 50;
  end;
  AdvPolyList1.EndUpdate;


Important note !: All BeginUpdate calls must end with an EndUpdate. In other words: The count of BeginUpdate and EndUpdate calls must be equal. When this condition is false, the listbox will not update, and the list will not respond to other update calls.