Delphi XE6 - Как сделать так, чтобы изображение определяемых пользователем компонентов отображалось на поддоне

Я перехожу с 2007 года на XE6, и у меня есть несколько пользовательских компонентов, написанных мной и третьей стороной.

При установке компонентов в delphi 2007 вы просто добавляете компоненты в библиотеку, и она автоматически находит и загружает одноименный DCR в файл dpk и загружает изображение на поддон.

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

Я искал и нашел несколько тем на эту тему, в которых описывалось ручное добавление файлов DCR в исходный код проекта, что я сделал, но это не работает и / или ненадежно.

Во-первых, когда я переустанавливаю bpl, палитра образцов (в которую я загрузил все свои компоненты) удаляет все компоненты, которые я только что установил, и ничего не показывает.

Когда я закрываю Delphi и перезапускаю, компоненты появляются на палитре, но случайно некоторые из изображений по-прежнему остаются изображениями по умолчанию.

Я получаю другой результат, каждый раз, когда я повторно устанавливаю bpl, каждый раз, когда разные изображения имеют правильное изображение, а другие - изображение по умолчанию. Кажется довольно случайным, какие из них не появляются.

Есть какие-нибудь подсказки, что происходит?


person Andy k    schedule 17.05.2014    source источник


Ответы (1)


Думаю, я нашел способ решить эту проблему.

Я заметил, что у меня загружен SynEdit, и у него нет проблем с размещением его значков на палитре, поэтому я загрузил dpk, чтобы посмотреть, как он это сделал.

Кажется, что проблема существует, когда каждый компонент добавляется в библиотеку как отдельный файл.

Ключ состоит в том, чтобы создать только один файл, например MyLibReg.pas, и добавить каждый файл компонента в раздел «Использование» модуля. Создайте процедуру регистрации, а затем зарегистрируйте все компоненты за один раз в процедуре регистрации. Вам нужно будет просмотреть каждый файл, найти отдельные процедуры регистрации, скопировать и вставить имена классов в процедуру регистрации MyLibReg.pas, а затем удалить эти процедуры из этих файлов.

Затем загрузите редактор изображений и создайте новый файл dcr с именем MyLibReg.dcr.

Следующий бит немного утомителен, загрузите все файлы dcr из всех ваших пользовательских компонентов в редактор изображений и скопируйте и вставьте изображения в MyLibReg.dcr, вам нужно будет вручную создать все имена растровых изображений, а затем вставить изображения.

Сохраните dcr в том же каталоге, что и MyLibReg.pas.

В XE6 выберите «Компонент / Установить компонент», выберите «Установить в новый пакет». в имени файла модуля перейдите к MyLibReg.Pas и продолжите сборку / установку пакета.

Вуаля, все правильные значки появляются.

Кажется, XE6 может надежно работать только с одним файлом dcr на bpl.

person Andy k    schedule 20.05.2014