Créer TImageList en spécifiant uniquement les chemins
-
22-07-2019 - |
Question
Dans Delphi 2007, les images sont chargées dans un TImageList au moment de la conception. Cela introduit le problème suivant:
- J'ai un dossier contenant les graphiques que j'utilise dans mon application
- Chaque fois que je veux changer, disons, l'icône de "sauvegarde", je dois
- Modifiez le graphique dans le dossier (à mes propres fins)
- Parcourez toutes les listes TImageLists de l'application
- Changer le graphique dans la TImageList
Existe-t-il un moyen (composant, script de compilation, ...) d’exécuter les étapes 2 et 3 automatiquement, c’est-à-dire de ne spécifier que les chemins des graphiques au moment de la conception, en créant une dépendance pour les fichiers graphiques réels?
La solution
Vous pouvez créer un descendant de TImageList et ajouter ce type de logique ici.
Etant donné que les composants faisant référence à des images à l'intérieur d'une TImageList le font par index, il serait plus simple de demander à votre descendant d'avoir une propriété ImagePaths de type TStrings qui est formatée comme suit:
#=Filename
Et peut-être ajouter une propriété BasePath de type chaîne également.
Ensuite, lors du chargement de ce composant, il pourrait recharger automatiquement ces images en mémoire.
Vous pouvez même en faire un expert en conception qui charge les images dans le concepteur.
- jeroen
Autres conseils
Les classes ne sont jamais complètement compiletées. Les classes Designtime sont également diffusées à partir de ressources.
Je charge les images dans TImagelist
au moment de l'exécution. Pour cette raison même, je n’assigne aucune image au moment de la conception. Ils sont tous ajoutés en tant que ressource à l'exe et je les charge à l'exécution à partir de là. Cela signifie également que les images peuvent être modifiées sans recompiler le fichier exe.