Liegen die Imagelisten auf einer normalen Form, funktioniert alles so wie gewollt. Sieht fast nach einem Bug aus.
Nein, das ist kein Bug. Die
TVirtualImageList muss ja über die DPI-Änderung für das Form informiert werden. Deswegen muss sie zwingend auf dem Form liegen. In dem besagten Artikel steht auch:
Zitat:
TVirtualImageList erbt automatisch die DPI seines Eigentümers (TCustomForm oder TCustomFrame), falls dieser skaliert ist.
Damit ist klar, daß das Form oder Frame der Owner der ImageList sein muss.
Unter
Bewährtes Vorgehen steht dann auch:
Zitat:
Eine TVirtualImageList-Komponente sollte immer auf einem Formular, nicht in einem Datenmodul platziert werden. Formulare haben einen zugeordneten Monitor und eine zugeordnete Auflösung (DPI); Datenmodule nicht. TImageCollection-Komponenten können beliebig platziert werden, da sie einfach die Quelle sind und nicht von DPI-Änderungen beeinflusst werden: sie sind die Quelle und die virtuelle Bilderliste ist die Darstellung.