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 >>

TAdvSmoothImageListBox
Update smooth controls 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 smooth listbox or a smooth imagelistbox with 500+ items in code, it tends to be slow when starting the application.
For each item that is added / deleted or updated, the listbox is updated. It is just a matter of milliseconds to update the listbox 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 listbox, 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 the TAdvSmoothListBox component to update all items between a BeginUpdate and EndUpdate.

var
  i: integer;
begin
  AdvSmoothListBox1.Items.BeginUpdate;
  for I := 0 to AdvSmoothListBox1.Items.Count - 1 do
  begin
    AdvSmoothListBox1.Items[i].Caption := 'Item Updated !';
  end;
  AdvSmoothListBox1.Items.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 listbox will not respond to other update calls.

A List of components which currently implement the BeginUpdate and EndUpdate:
  • AdvSmoothListBox (AdvSmoothListBox.Items.BeginUpdate / EndUpdate)
  • AdvSmoothImageListBox (AdvSmoothImageListBox.Items.BeginUpdate / EndUpdate)
  • AdvSmoothDock (AdvSmoothDock.BeginUpdate / EndUpdate)
  • AdvSmoothExpanderGroup (AdvSmoothExpanderGroup.BeginUpdate / EndUpdate)
  • AdvSmoothSplashScreen (AdvSmoothSplashScreen.BeginUpdate / EndUpdate)
  • AdvSmoothTimeLine (AdvSmoothTimeLine.BeginUpdate / EndUpdate)
  • AdvSmoothTouchKeyBoard (AdvSmoothTouchKeyBoard.Completion.BeginUpdate / EndUpdate)