What exactly is the difference between <listview.Clear> and <listview>.items.clear in delphi 7?
ListView.Clear
is just a wrapper around ListView.Items.Clear
with ListItems.BeginUpdate
/ListItems.EndUpdate
. look at the source:
procedure TCustomListView.Clear;
begin
FListItems.BeginUpdate;
try
FListItems.Clear;
finally
FListItems.EndUpdate;
end;
end;
From the docs:
The BeginUpdate method suspends screen repainting until the EndUpdate method is called. Use BeginUpdate to speed processing and avoid flicker while items are added to or deleted from a collection.
A better practice is to use BeginUpdate
/EndUpdate
for speed and avoiding flicker.
But the main reason to use ListView.Clear
is because using a "high-level VCL methods" (As well commented by @Arnaud) is always a good idea, and the implementation might change (BTW, the method was introduced in D7).
EDIT: I have tested the TListView
with 10k Items (D7/WinXP):
ListView.Items.Clear
: ~5500 msListView.Clear
: ~330 ms
Conclusion: ListView.Clear
is about 16 times faster than ListView.Items.Clear
when BeginUpdate
/EndUpdate
is not used!