Создать TImageList, указав только пути
В Delphi 2007 изображения загружаются в TImageList во время разработки. Это создает следующую проблему:
- У меня есть папка с графикой, которую я использую в своем приложении
- Всякий раз, когда я хочу изменить, скажем, значок "сохранить", я должен
- Измените графику в папке (для моих собственных целей)
- Итерация по всем спискам TImageList в приложении
- Изменить рисунок в TImageList
Есть ли способ (компонент, сценарий компиляции, ...) автоматически выполнять шаги 2 и 3, то есть указывать только пути графики во время разработки, создавая зависимость от реальных графических файлов?
3 ответа
Вы можете создать потомка TImageList и добавить туда такую логику.
Поскольку компоненты, ссылающиеся на изображения внутри TImageList, делают это по индексу, было бы проще, чтобы у вашего потомка было свойство ImagePaths типа TStrings, отформатированное так:
#=Filename
И, возможно, добавить свойство BasePath типа string.
Затем при загрузке этого компонента он может автоматически перезагрузить эти изображения в память.
Вы могли бы даже сделать это экспертом времени разработки, который загружает изображения в дизайнере.
--jeroen
Классы никогда не бывают полностью компилируемыми. Классы Designtime также передаются из ресурсов.
Я загружаю изображения в TImagelist
во время выполнения. По этой причине я не назначаю изображения во время разработки. Все они добавляются в качестве ресурса в исполняемый файл, и я загружаю их оттуда во время выполнения. Это также означает, что изображения могут быть изменены без перекомпиляции исполняемого файла.