Конференция "Компоненты" » О сохранении иконок компонентов в палитре XE4
 
  • Nikolay40 © (14.11.13 09:38) [0]
    У меня проблема с сохранением иконок сторонних компонентов в палитре для Delphi XE4.
    Устанавливаю компонент через File/New/Package Delphi. Далее Build, и через install в окне редактора проекта проходит его установка.
    Поскольку у меня только pas-файл, то файл dpk создаётся только после install. Для добавлении иконок создаю dcr-файл с иконками компонентов. Добавить его через add не получается, поэтому в dpk-файл вписываю имя dcr-файла вручную как ресурс. Потом делаю uninstall, потом опять install, и в палитре у компонентов появляются нужные иконки. Пути все прописаны.
    Делаю save All. А после перезапуска Delphi иконки у компонентов пропадают. (Компоненты становятся как иконки по умолчанию).
    Что-то не до конца делаю? Как сделать так, чтобы иконки в палитре не пропадали? ОС Win7 Max.
  • DimaBr © (14.11.13 13:44) [1]
    Попробуйте создать новый (пустой) компонент с новой картинкой и посмотреть за его поведением
  • Юрий Зотов © (14.11.13 15:15) [2]
    Это не самый лучший способ, потому что иконка компонента попадет в runtime, хотя там она не нужна. Сделайте не 1, а 2 пакета. В первом (runtime) пропишите только код, во втором (designtime) - процедуру register и ресурс с иконкой. Первый пакет откомпилируйте и добавьте в секцию required второго, а затем инсталлируйте второй пакет в IDE.
  • DimaBr © (14.11.13 23:01) [3]
    >Это не самый лучший способ, потому что иконка компонента попадет в runtime
    Не понятно, каким образом она попадает в RunTime если {$R 'MyIcon.dcr'} прописан в dpk файле
  • Юрий Зотов © (17.11.13 01:39) [4]
    > DimaBr ©   (14.11.13 23:01) [3]

    Имелось в виду - попадет в bpl. А это и runtime тоже.
  • Nikolay40 © (17.11.13 18:49) [5]
    Ну, в общем, чем дальше в лес, тем больше дров!
    Я решил, что XE4 может кривая, и снёс её, а вместо неё установил XE5. (китайская сборка Lite без С++). Установилась без проблем, вот только сразу после установки если сделать запуск, то вылетает ошибка что-то вроде не найден файл. А после этого при запуске через *.exe всё запустилось. Практически все иконки на месте, кроме 2х-3х, которые оказались по умолчанию.
    Выходил и запускал снова несколько раз - всё нормально.
    Потом полдня занимался своими делами в интернете, в Эл.почте, в Скайпе.
    Вечером запустил снова XE4, и ужас: половина иконок сбросилась на "по умолчанию" (все иконки Indy, BDE, Win3.1, TeeChart, InterBase, IntraWeb, Fast Report, и понемногу в  других закладках). Полетели в основном те, которые дополнительно были установлены в составе сборки и загрузились в процессе инсталляции. Никаких новых компонентов я не устанавливал. Никаких манипуляций с чисткой реестра не делал. У меня стоит ОС Win7 Max.
    В общем, я в ступоре. Даже не знаю, куда глянуть. То ли сборка кривая, то ли на моей машине стоит нечто, что портит настройки этой XE5. Хоть обратно на D7 возвращаться (если она под Win7 захочет работать).
  • Nikolay40 © (17.11.13 19:31) [6]
    Только что наткнулся на новый фокус:
    Решил сделать небольшой тестовый проект VCL.
    Набрал примитивную форму, кинул пару компонентов с палитры, запустил. вышел.
    И обнаружил, что все иконки восстановились!
    Как так может быть? Какая-то мистика. Или этому есть какое-нибудь объяснение?
    Посмотрю, что завтра будет.
  • Nikolay40 © (21.11.13 11:37) [7]
    Случайно обнаружил в одной из книжек небольшое замечание о том, что для сохранения иконок в палитре необходимо запускать Delphi с параметром -nohache.
    Правда, это было написано для Delphi 2010, но для XE5 вероятно тоже прокатит.
    Попробовал у себя для XE5. Пока иконки не сбрасываются. Возможно, что в этом и есть причина. Послежу, дальше что будет.
  • DimaBr © (22.11.13 03:50) [8]
    Культин Никита Борисович, Основы программирования в Delphi XE, БХВ-Петербург, 2011. стр 266

    Замечание
    Возможна ситуация, когда после установки компонента и последующей активации процемма создания нового приложения (после перезагрузки Delphi) вместо уникального значка компонента (или значка компонента базового класса) отображается значок "компонент". Причина этого в том, что битовые образы значков кэшируются в реестре (раздел HKEY_CURRENT_USER\Software\CodeGear\BDS\8.0\Palette\Cashe) и загружаются оттуда. Если по какой либо причине при первой установке пакета (в процессе отладки) значок не был создан правильно, то при последующих загрузках Delphi будет загружаться именно этот, неправильный значок, даже в том случае, если ошибка устранена (сразу после установки пакета отображается правильный значок). Для устраненния описанной ситуации а командной строке запуска Delphi надо указать параметр -nocache.

  • DimaBr © (22.11.13 03:55) [9]
    По поводу написаного: предлагаю удалить пакет, удалить в реестре картинку и установить ещё раз !
 
Конференция "Компоненты" » О сохранении иконок компонентов в палитре XE4
Есть новые Нет новых   [118610   +55][b:0][p:0.001]