![]() |
AW: TImageList-Alternative? Resource-Datei? Performance?
Es sind maximal 10 die sich ändern... dafür aber gegebenenfalls oft.
Zitat:
(Resource schneller) Zitat:
Dann bin ich die IDs los und kann frei laden und sortieren. Um doppelten Code zu vermeiden, würde ich alle Resource-Namen in ein Enum speichern. |
AW: TImageList-Alternative? Resource-Datei? Performance?
Wenn es sich ausschließlich um PNG Icons handelt, könntest du mit der
Delphi-Quellcode:
aus den
PngImageList
![]() Ich benutze diese Namen auch um den aktuell gültigen gültigen ImageIndex zu ermitteln und habe mir dazu einen kleinen Class-Helper geschrieben:
Delphi-Quellcode:
type
TPngImageListHelper = class helper for TPngImageList public function FindImageIndexByName(const AName: string): Integer; end; function TPngImageListHelper.FindImageIndexByName(const AName: string): Integer; var itm: TCollectionItem; begin Result := -1; for itm in PngImages do begin if SameText(itm.DisplayName, AName) then begin Result := itm.Index; Break; end; end; end; |
AW: TImageList-Alternative? Resource-Datei? Performance?
PNGs sind es nicht, aber ICOs. Muss sie dann halt alle umwandeln.
Ich werde mir das mal angucken. Wenn ich das richtig verstehe, bist du der Urheber dieser Komponente? Stellt sich mir nur noch die Frage... PNGComponents oder simple Resourcedatei. |
AW: TImageList-Alternative? Resource-Datei? Performance?
Zitat:
Auf gar keinen Fall würde ich die Icons komplett dynamisch immer wieder neu laden und freigeben. |
AW: TImageList-Alternative? Resource-Datei? Performance?
Wie wäre es denn mit 'nem Nachfahren von TImageList?
Ein zusätzliches Attribut Names vom Typ TStrings, in das die Namen der Bilder kommen, in der Reihenfolge, in der sie in der Imageliste stecken. Dann noch 'ne Methode GetImageIndexByName (oder so), die per IndexOf in den Strings nach dem Namen sucht und, durch die identische Sortierung, dann den passenden ImageIndex liefert. Für die Methoden Add, Insert ... der ImageList könnte man Versionen schreiben, die zusätzlich auch noch den Namen als Parameter annehmen und in den Strings speichern. Sowas in der Art?
Delphi-Quellcode:
Wenn man nicht den ImageIndex haben will, sondern direkt das Bild, dann schreibt man sich noch 'ne Methode GetImageByName, die analog zum ImageIndex halt das Bild liefert.
Type
TMyImageList = class(TImageList) fNames : TStrings; public { Public-Deklarationen } constructor Create(aOwner : TComponent); override; destructor Destroy; override; property Names : TStrings read fNames; end; constructor tMyImageList.Create(aOwner : TComponent); begin inherited; fNames := TStringList.Create; end; destructor tMyImageList.Destroy; begin fNames.Free; inherited; end; function tMyImageList.GetImageIndexByName(AName : String) : Integer; begin Result := fNames.IndexOf(AName); end; end. ... IrgendeineKomponenteMit.ImageIndex := ImageList.GetImageIndexByName('NameDesBildes'); Der Aufwand dürfte insgesamt garnichtmal so hoch sein. |
AW: TImageList-Alternative? Resource-Datei? Performance?
An genau sowas dachte ich :) Wenn man dann noch den Designtime Editor überschreibt, kann man die Namen sogar direkt dort einpflegen und müsste nicht manuell mit Resourcen hantieren.
|
AW: TImageList-Alternative? Resource-Datei? Performance?
Zitat:
Delphi-Quellcode:
Das ist für DI Experten vielleicht etwas anrüchig, erspart mir aber "Icon-Katastrophen" wenn sich mal wieder was ändert.
const
CIco_Hund = 37; CIco_Katze = 38; CIco_Maus = 39; Das erleichtert natürlich nicht das Zuweisen im Designer, deshalb mache ich das auch lieber im Code. Im Designer lege ich das dann eher nur als "Vorschau" an. Rollo |
AW: TImageList-Alternative? Resource-Datei? Performance?
Zitat:
|
AW: TImageList-Alternative? Resource-Datei? Performance?
Zitat:
Zitat:
Jetzt muss ich mich nur noch entscheiden zwischen PNGComponents oder TMyImageList. Bei Ersterem könnte ich sofort den Design Time Editor verwenden, müsste aber alle meine ICOs in PNGs umwandeln. Ich glaube aber sogar fast, das PNGs irgendwie gängiger sind als ICOs. |
AW: TImageList-Alternative? Resource-Datei? Performance?
Zitat:
Delphi-Quellcode:
die das unterstützt.
ConvertToPNG
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz