Лучший способ сделать значок компонента в Delphi XE, используя только встроенные инструменты - PullRequest
21 голосов
/ 09 августа 2011

В Delphi 7 включена программа-редактор изображений, которая может читать и записывать .dcr файлы, которые являются просто двоичными файлами ресурсов (.res файлы) с другим расширением, что по соглашению указывает, что файл .dcrсодержит скомпилированный ресурс с именованными растровыми ресурсами, имена которых соответствуют именам ваших компонентов (растровый ресурс с именем TMYCOMPONENT для компонента с именем TMyComponent).Эти растровые изображения используются для размещения значков на палитре компонентов delphi, а также на форме или модуле данных при добавлении на них невизуального компонента.

Перемотка вперед 10годы до Delphi XE, и я пытаюсь сделать значки компонентов, используя файл растрового изображения и файл RC, и собирать их в файл .DCR как часть Delphi IDE.

Это должно быть простовопрос добавления файла .Rc и такого объявления в файл .dpk (исходный код пакета), например:

{$R mypackageicons.rc mypackageicons.dcr}

Образец файла .rc, содержащий значок компонента:

 // COMPONENT ICON RESOURCES
 TMYCOMPONENT BMP "TMYCOMPONENT.BMP"

Однако я не могу заставить это работать.Кажется, что вы получаете некоторые странные ошибки RLINK32 и происходит сбой IDE в borlandmm.dll, когда я пытаюсь это сделать:

[DCC Error] E2161 Error: RLINK32: Unsupported 16bit resource in file "C:\temp\compicon\COMPONENTICONS.rc"
[DCC Fatal Error] F2084 Internal Error: AV21515155-W06000D07-1

Файл растрового изображения, о котором идет речь, представляет собой простой 256-цветный файл BMP размером 24x24 пикселя, и ятакже попробовал 16 цветных растровых изображений, но не повезло.Мне кажется, что программа ImageEdit - единственный известный мне способ, который я могу использовать для создания значков компонентов Delphi.

Чего мне не хватает?

Обновление: Внешние инструменты - отличное решение для людей, у которых нет доступа к редактору изображений Delphi 7, и которые на самом деле могут быть лучше, но я бы предпочел сделать этоиспользуя только то, что поставляется с Delphi, потому что кажется, что это возможно, используя только одну декларацию {$ R}, текстовый файл и файл bmp, созданные кистью.Конечно, они не упустили возможность создавать значки компонентов с помощью этого большого инструмента для разработки объемом 1,5 гигабайта!.. update2: И есть способ;Руди В. нашел его.

Ответы [ 4 ]

22 голосов
/ 09 августа 2011

Я использовал и имел большой успех с:

  • Редактор ресурсов XN Колина Уилсона
  • Редактор ресурсов Андерса Меландера

Обновление

Я только что попробовал следующее в XE, и все прошло успешно.

  • Я создал новый компонент, TNewAnimate , в NewAnimates.pas .
  • Я добавил TNewAnimate.pas в dclusr.dpk .
  • Я добавил растровое изображение (называемое TMRUComboBox.bmp , у меня это все равно было), используя Project & rarr; Ресурсы и изображения ... открыли диалог .dpk и дали ему имя TNEWANIMATE .
  • Я переустановил dclusr.dpk .

Исходный файл для dclusr.pdk получил новую запись {$R *.dres} (обратите внимание на расширение). Я мог видеть TNewAnimate в палитре Samples с глифом в TMRUComboBox.bmp .

Я обнаружил dclusr.dres в том же каталоге, что и dclusr.dpk (который обычно находится в C: \ Program Files , но не в моей настройке ). Я попытался открыть его с помощью редактора ресурсов XN, но тот отказался открыть его с загадочным сообщением об ошибке. Это не обычный .res файл, кажется.

enter image description here

6 голосов
/ 09 августа 2011

Попробуйте Редактор ресурсов .Хорошая замена для старого Image Editor.

3 голосов
/ 22 февраля 2014

Я исследовал предыдущие ответы, используя Delphi XE5 upd2. Не большой успех. Поэтому я попытался создать новое решение и нашел его на основе предыдущих ответов.

Короче говоря: 1. Создайте растровое изображение с помощью программы Windows Paint. 2. Создайте файл сценария ресурса с растровым изображением. 3. Скомпилируйте скрипт с BRCC32 для создания файла dcr. 4. Включите файл dcr в исходный код пакета 5. Перекомпилируйте / установите пакет

Чтобы автоматизировать это, достаточно добавить командную строку BRCC32 в проект пакета «события перед сборкой». Таким образом, ваш файл dcr будет воссоздан перед каждой сборкой.

Подробное описание см. В моем блоге по адресу http://francois -piette.blogspot.be / 2014/02 / howto-create-dcr-file-for-your-delphi.html

3 голосов
/ 10 августа 2011

Сначала добавьте файл «mypackageicons.rc» в проект, это создаст файл «mypackageicons.res» во время компиляции (см. Связанный SO ответ на вопрос «Включение файла ресурсов в проект с помощью файла .RC»). вместо файла .RES ").

Также добавьте {$R mypackageicons.res mypackageicons.dcr} к компонентному блоку (или к .dpk). Это не создает файл .dcr, но устанавливает значок для компонента.


Обратите внимание, что мой тест с ресурсом BMP не удался. Я использовал BITMAP в качестве типа ресурса.

...