Конференция "Компоненты" » свой значек на сплаш-скрин при загрузке иде
 
  • nokia4ever (28.07.14 09:51) [0]
    есть некий маленький компонент. состоит из RT и DT пакетов, в RT - небольшая функция, в DT - регистрация компонента и юнит для регистрации отображения своего значка на заставке при загрузке ide (xe6). Сделал на одном из примеров из инета (такая же реализация есть в компонентах TMS).

    ------ немного покусаная версия

    unit TMSSplash; interface
    uses ToolsApi, Windows, Classes, Graphics;

    {$R TMSSPLASH.RES}

    implementation

    procedure AddSplash;
    var  bmp: TBitmap;
    begin
     bmp := TBitmap.Create;
     try
       bmp.LoadFromResourceName(HInstance, 'TMSSPLASH');
       SplashScreenServices.AddPluginBitmap(GetProductName + ' for ' + GetCompilerVersion + ' ' + GetProductVersion,bmp.Handle,false,'Registered','');
     finally
       bmp.Free;
     end;
    end;

    begin
     AddSplash;
    //***// showmessage('Added!');
    end.
    --------------

    так вот, сделал аналогично. юнит добавлен первым в DT пакет компонента. После инсталляции компонента и первом перезапуске ide все красиво отображается и значок своего компонента вижу при загрузке на сплаш и потом в палитре компонент. Но вот потом, сколько не перезагружай иде, значка при загрузке нет (хотя в пакетах свой компонент вижу и на палитре тоже (и он работает)). другие значки от других компонент вижу, а своего нет. пробовал вставлять ***, но табличка "added!" показывается только при инсталляции и при первом перезапуске ide, а дальше нет. пути к компоненту прописаны, никаких ошибок не возникает, но значка не видно.
    В чем может быть дело?
  • DimaBr © (31.07.14 08:01) [1]
    В вашем модуле должна быть прописана процедура Register, в которой вы и вызываете регистрацию сплеша

    procedure Register;
    begin
     AddSplash;
    end;

  • nokia4ever (31.07.14 10:47) [2]
    я пробовал вызов функции и в регистер-процедуру компонента добавлять и в бегин-енд простого модуля. не помогает.
  • nokia4ever (31.07.14 23:06) [3]
    ++
    https://forums.embarcadero.com/thread.jspa?threadID=90619

    там последний (старый очень) - практически мой вопрос. может тут из гуру както смог преодолеть?
  • nokia4ever (31.07.14 23:08) [4]
    ++ попробовал отдельна поццеплять ресурс, тоже ноль пока
  • nokia4ever (31.07.14 23:12) [5]
    + еще видел какоето "дикую" (с моей точки зрения)  реализацию этого события, где практически для отображения значка был выбран png формат (там подготавливалась матрица с цветами и реплицировалась потом на сплаш). найти не могу пока, может кому то поможет при поиске.

    множество и простейших и сложный вариантов перебрали с битмап и с hbitmap типами, пробовал и там и сям процедуру вставлять... пока сижу на мели с решением.
  • nokia4ever (04.08.14 01:30) [6]
    что-то начинает проясняться...

    создаем пустой пакет, в меню проект-ресурсы и картинки кладем 24х24 бмп (рисуем в паинте любой) с именем MYBMP. справа в менеджере проектов добавляем в
    requires (или через просмотр кода пакета)

     vcl,
     designide,
     rtl,
     vclimg;

    добавляем в пакет юнит

    unit Splash; interface

    uses  ToolsApi, Windows, Classes, vcl.Graphics;

    implementation

    Initialization
    // (можно и в виде процедуры, а потом тут вызов - не критично)
    if Assigned(SplashScreenServices) then
    SplashScreenServices.AddPluginBitmap('Super puper',LoadBitmap(FindResourceHInstance(HInstance), 'MYBMP'));
    end.

    компилируем, жмем install, перезагружаем среду, видим свою надпись при старте.

    теперь, в пакет добавляем юнит с простым компонентом

    unit Knopka; interface

    uses  Windows, Classes, StdCtrls;

    type
    TMyBtn = class(TButton)
    private
    { Private declarations }
    protected
    { Protected declarations }
    public
    { Public declarations }
    published
    { Published declarations }
    end;

    procedure Register;

    implementation

    procedure Register;
    begin
    RegisterComponents('My', [TMyBtn]);
    end;

    end.

    компилируем, жмем uninstall, install (видим, что компонент зарегился), перезапускаем среду - надпись пропадает (сам компонент есть).
    удаляем юнит Knopka - переинсталируем, надпись при старте есть.

    ПОЧЕМУ???
  • DimaBr © (04.08.14 12:49) [7]
    AddSplash должна быть в процедуре Регистрации
  • DimaBr © (04.08.14 13:11) [8]
  • nokia4ever (04.08.14 13:42) [9]
    пробовал туда запихивать, такой же эффект.
  • nokia4ever (04.08.14 14:47) [10]
    может кто повторить действия в
    nokia4ever   (04.08.14 01:30) [6]
    для проверки?
  • nokia4ever (04.08.14 14:59) [11]
    скачать тестовый проект
    http://rghost.ru/57267195
  • nokia4ever (04.08.14 15:34) [12]
    все, разобрался
  • DimaBr © (07.08.14 10:15) [13]
    Разобрался ? Расскажи, в чём была ошибка !
  • nokia4ever (08.08.14 22:54) [14]
    2 DimaBr.. Спасиб, что напомнили.

    +++

    ах да, сорр. замотался тогда, забыл совсем про вопрос, помню что ответил.

    этот сайт помогал мне с ответами (несмотря на всякие козни :) мелкие) и вообще для пишущих на Delphi - RU - всегда поделюсь.

    ща...

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

    проблема отняла почти 4 дня на изучение. на разные эксперименты (ппц, в разных вариантах исполнения пихал и там и сям).

    после [6]

    когда дошло, в чем дело, хотелось кого-то убить :)

    лазия по форумам разрабов (вопрос не принимают, без лицензии). нашел похожий. выцепил через почту (японец и немец там), задвинул им тему в почту + обчитался документации так, что потом еще день с открытыми глазками спал и снились бескрайние Эмбаркадеро..

    а дело оказалось в новых правилах IDE версии (думаю что старше XE2 - не уверен), где ОКАЗЫВАЕТСЯ, что среда (IDE) сама решает, какие компоненты нужны на загрузку.

    Значится так (примерное мое представление об алгоритме).

    1. пишем свой простой компонент (выше пример)
    2. регим. рибутим ИДЕ - ок, ИДЕ видит - новый - показывает его на сплаше.
    3. рибутим еще, ИДЕ видит - не применяется, принимает решение - не нужен на сплаш. хотя сам компонент после загрузки среды и нового проекта доступен. только теперь начинает доходить для чего сделали :)

    терь понятно, почему 1 раз? :)

    самое интересное
  • nokia4ever (08.08.14 22:55) [15]
    Удалено модератором
    Примечание: Создание пустых сообщений
  • nokia4ever (08.08.14 23:15) [16]
    Удалено модератором
    Примечание: Создание пустых сообщений
  • nokia4ever (08.08.14 23:20) [17]
    еще момент! важный.

    IDE на регистрацию ведет свой каталог в реестре виндов (!). Вот уж..
    если он пуст - показывает все, если нет, по своему желанию.
    ну думаю тему поизучаете кому нада.

    с уважением.
  • nokia4ever (08.08.14 23:25) [18]
    Удалено модератором
    Примечание: Создание пустых сообщений
  • nokia4ever (08.08.14 23:29) [19]
    снова забыл. неудобно.

    все, спать пора, даю.

    _http  ://rghost.ru/57367491

    как ранее - убрать _ и пробелы после http
 
Конференция "Компоненты" » свой значек на сплаш-скрин при загрузке иде
Есть новые Нет новых   [134427   +34][b:0][p:0.001]