Bin den Code per Debugger durchgegangen und dort wurde nach jeder Einfügeoperation die Update-Methode der TPngImageCollectionItems aufgerufen:
Delphi-Quellcode:
procedure TPngImageCollectionItems.Update(Item: TCollectionItem);
begin
inherited Update(Item);
if FOwner is TPngImageList
then TPngImageList(FOwner).CopyPngs;
end;
wobei CopyPngs so aussieht:
Delphi-Quellcode:
procedure TPngImageList.CopyPngs;
var
I: Integer;
Png: TPNGObject;
Icon: HIcon;
begin
//Are we adding a bunch of images?
if FLocked > 0
then Exit; {... danach werden alle PNGs neu erstellt}
...dann erst hab ich die Methoden BeginUpdate und EndUpdate entdeckt, hatte vorher keine Ahnung.
Zitat:
Ist das unter Delphi gängige Praxis
Ja, wenn mehrere Datensätze sich ändern, ohne dass die View (also Formulare usw) darauf reagieren soll, sollte man diese Methoden verwenden. Man findet sie z.B. auch in TListItem oder TStrings.
Dani H.
At Least I Can Say I Tried