Создать TImageList, указав только пути

В Delphi 2007 изображения загружаются в TImageList во время разработки. Это создает следующую проблему:

  • У меня есть папка с графикой, которую я использую в своем приложении
  • Всякий раз, когда я хочу изменить, скажем, значок "сохранить", я должен
    1. Измените графику в папке (для моих собственных целей)
    2. Итерация по всем спискам TImageList в приложении
    3. Изменить рисунок в TImageList

Есть ли способ (компонент, сценарий компиляции, ...) автоматически выполнять шаги 2 и 3, то есть указывать только пути графики во время разработки, создавая зависимость от реальных графических файлов?

3 ответа

Решение

Вы можете создать потомка TImageList и добавить туда такую ​​логику.

Поскольку компоненты, ссылающиеся на изображения внутри TImageList, делают это по индексу, было бы проще, чтобы у вашего потомка было свойство ImagePaths типа TStrings, отформатированное так:

#=Filename

И, возможно, добавить свойство BasePath типа string.

Затем при загрузке этого компонента он может автоматически перезагрузить эти изображения в память.

Вы могли бы даже сделать это экспертом времени разработки, который загружает изображения в дизайнере.

--jeroen

Классы никогда не бывают полностью компилируемыми. Классы Designtime также передаются из ресурсов.

Я загружаю изображения в TImagelist во время выполнения. По этой причине я не назначаю изображения во время разработки. Все они добавляются в качестве ресурса в исполняемый файл, и я загружаю их оттуда во время выполнения. Это также означает, что изображения могут быть изменены без перекомпиляции исполняемого файла.

Другие вопросы по тегам