Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TImageList-Alternative? Resource-Datei? Performance? (https://www.delphipraxis.net/193857-timagelist-alternative-resource-datei-performance.html)

Glados 15. Sep 2017 20:24


TImageList-Alternative? Resource-Datei? Performance?
 
Ich habe aktuell das Problem, dass meine ImageListen mittlerweile etwas größer werden. Größer heißt hier 6 bis 20+ Icons in einer Liste.

Gibt es irgendeine Möglichkeit nicht auf diese ekelhafte ID einer Icons angewiesen zu sein bei der Zuweisung eines Icons für einen TButton oder eines TImage beispielsweise?

Gibt es vielleicht eine bessere Image-Liste wo man über in der Liste selber definierte Namen auf ein Icon zugreifen kann?
Das würde mein Leben erheblich erleichtern.

Zacherl 15. Sep 2017 20:29

AW: TImageList-Alternative?
 
Leider nein. Zur Designtime keine Chance.

Glados 15. Sep 2017 20:32

AW: TImageList-Alternative?
 
Das ist schade denn wie gesagt ist es richtig ekelhaft immer über die ID, die sich ändern kann, zu gehen.

Über eine Resource-Datei wäre noch eine Möglichkeit, oder?
Da kann ich über den Namen gehen und muss keine Reihenfolge einhalten.
Fragt sich nur wie die Performance ist denn zur Laufzeit greife ich aktuell schon ab und zu auf Bilder in der ImageList zu.

Zacherl 15. Sep 2017 20:36

AW: TImageList-Alternative?
 
Zur Laufzeit kannst du dir natürlich einen entsprechenden Container basteln, der dir ein Bild anhand des Namens liefert. Du könntest theoretisch sogar von
Delphi-Quellcode:
TCustomImageList
und dem dazugehörigen Designtime-Editor ableiten um dir die Namen der Icons in einer (internen) extra Liste (am besten ein Dictionary für schnellen Zugriff) zu merken. Dann noch eine Funktion, welche dir den ImageIndex anhand des Namens liefert und voilla.

Glados 15. Sep 2017 20:37

AW: TImageList-Alternative?
 
Limit, dass ich diese Erklärung verstehe. Demnach steht es bei mir außer Frage, dass ich das technisch umsetzen kann.

Was wäre hier der Vorteil gegenüber einer Resourcedatei?

CCRDude 15. Sep 2017 20:52

AW: TImageList-Alternative? Resource-Datei? Performance?
 
Ich lade Icons zur Laufzeit aus den Resourcen in die TImageList, dann kann ich mir die Indizes beim Hinzufügen in Variablen speichern. Hilft natürlich nur bei der Zuweisung im Code, nicht im Designer.

Glados 15. Sep 2017 20:54

AW: TImageList-Alternative? Resource-Datei? Performance?
 
Wäre auch ein Ansatz.

Hat das Laden aus einer Resourcedatei denn nennenswerte Performanceeinbußen?
Ich würde viele Icons bei Programmstart einmalig laden aber ein paar andere werden immer und immer wieder getauscht und somit neugeladen.

Redeemer 15. Sep 2017 21:01

AW: TImageList-Alternative? Resource-Datei? Performance?
 
Es geht vermutlich sogar schneller.

Glados 15. Sep 2017 21:02

AW: TImageList-Alternative? Resource-Datei? Performance?
 
Das wird jetzt aber interessant.
Warum genau ist es denn vermutlich schneller? Hat das was mit der Zugriffsart zu tun Code>Resource und Code>...>...>...>TImageList?

Zacherl 15. Sep 2017 21:20

AW: TImageList-Alternative? Resource-Datei? Performance?
 
Zitat:

Zitat von Redeemer (Beitrag 1381310)
Es geht vermutlich sogar schneller.

Definitiv nicht - maximal gleich schnell. Rate mal, wo
Delphi-Quellcode:
TImageList
seine Icons abspeichert? :P

Zitat:

Zitat von Glados (Beitrag 1381308)
Ich würde viele Icons bei Programmstart einmalig laden aber ein paar andere werden immer und immer wieder getauscht und somit neugeladen.

Um wie viele variable Icons handelt es sich? Bei einigen Wenigen (< 100) würde ich sie gar nicht erst dynamisch laden. Einfach beim Programmstart komplett zur ImageList hinzufügen und dann über den Index bestimmen, welches Icon an welcher Stelle auftaucht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:49 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz