Создание нестандартного компонента - как добавить небольшой значок, представляющий компонент на палитре инструментов?

Имейте в виду, что я прочитал все инструкции, которые смог найти, по добавлению значка компонента в свой пользовательский компонент. И я могу это сделать, когда мы говорим о размере значка, который составляет 24x24 пикселей. Я вижу значок, когда компонент помещается в форму. Однако я не вижу маленького значка 16x16, который должен отображаться при просмотре палитры инструментов.

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

MyComponentName16 [для файла BMP 16x16]

MyComponentName32 [для файла BMP 32x32]

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

Любые идеи?


person Wodzu    schedule 07.04.2012    source источник
comment
Какова разрядность используемого BMP-файла?   -  person RRUZ    schedule 07.04.2012
comment
Если вы измените (или просто добавите) ресурсы пакета, такие как эти значки, попробуйте открыть свой пакет, удалить его, затем добавить ресурсы, включить их в нужные блоки, пересобрать пакет и установить его обратно (вместо перезапуска IDE ). Или, если вы все это сделали, вы могли столкнуться с проблемой с кешированными пакетами (как описано, например, here , может быть, был даже какой-то параметр командной строки для очистки кеша, не уверен с этим).   -  person TLama    schedule 07.04.2012
comment
В принятом ответе на вопрос, который вы связали, видели ли вы комментарий о том, что имена изображений должны быть заглавными? (Например, TMYCOMPONENTNAME16.BMP и TMYCOMPONENTNAME32.BMP.) Требование использования всех заглавных букв существует с Delphi 1; это связано с загрузкой ресурсов по имени в IDE.   -  person Ken White    schedule 08.04.2012
comment
Это область, в которой Delphi просто отстой. IDE действительно могла бы помочь здесь, чтобы скрыть уродливые детали низкого уровня, но это не так.   -  person Wouter van Nifterick    schedule 08.04.2012
comment
Спасибо, ребята, за проявленный интерес. Я много раз безуспешно пытался переустановить пакеты, имена у меня были в верхнем регистре, а разрядность была 24. @TLama Я не ожидал, что решение по указанной вами ссылке будет работать, но оно сработало :) Не могли бы вы продвигать свой прокомментировать ответ?   -  person Wodzu    schedule 08.04.2012


Ответы (1)


Вы можете попробовать очистить кеш пакетов IDE:

  • удалите пакет компонента из вашей Delphi IDE
  • в реестре перейдите к следующему разделу
    HKEY_CURRENT_USER\Software\CodeGear\BDS\6.0\Package Cache\
  • найдите и удалите ключ, соответствующий имени вашего пакета (например, MyPackage.bpl)
  • теперь перейдите к следующей клавише
    HKEY_CURRENT_USER\Software\CodeGear\BDS\6.0\Palette\Cache\
  • найдите и удалите ключ, соответствующий имени вашего пакета (например, MyPackage.bpl)
  • и, наконец, попробуйте установить свой пакет обратно; теперь он должен отображаться с правильными значками

Источник: http://www.lnssoftware.ca/blog/?p=140

В качестве другого обходного пути вы можете попробовать запустить Delphi IDE с недокументированным параметром командной строки:

c:\Program Files (x86)\CodeGear\RAD Studio\6.0\bin\bds.exe -nocache
person TLama    schedule 08.04.2012
comment
Я отредактировал ярлык на рабочем столе Windows, добавил -nocache, перезапустил Delphi, и ЭТО РАБОТАЕТ! Спасибо TLama! Delphi 10.3.3: C: \ Program Files (x86) \ Embarcadero \ Studio \ 20.0 \ bin \ bds.exe -pDelphi -nocache - person El Diablo; 25.12.2019