-
есть некий маленький компонент. состоит из 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, а дальше нет. пути к компоненту прописаны, никаких ошибок не возникает, но значка не видно. В чем может быть дело?
-
В вашем модуле должна быть прописана процедура Register, в которой вы и вызываете регистрацию сплеша
procedure Register;
begin
AddSplash;
end;
-
я пробовал вызов функции и в регистер-процедуру компонента добавлять и в бегин-енд простого модуля. не помогает.
-
++ https://forums.embarcadero.com/thread.jspa?threadID=90619
там последний (старый очень) - практически мой вопрос. может тут из гуру както смог преодолеть?
-
++ попробовал отдельна поццеплять ресурс, тоже ноль пока
-
+ еще видел какоето "дикую" (с моей точки зрения) реализацию этого события, где практически для отображения значка был выбран png формат (там подготавливалась матрица с цветами и реплицировалась потом на сплаш). найти не могу пока, может кому то поможет при поиске.
множество и простейших и сложный вариантов перебрали с битмап и с hbitmap типами, пробовал и там и сям процедуру вставлять... пока сижу на мели с решением.
-
что-то начинает проясняться...
создаем пустой пакет, в меню проект-ресурсы и картинки кладем 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 - переинсталируем, надпись при старте есть.
ПОЧЕМУ???
-
AddSplash должна быть в процедуре Регистрации
-
-
пробовал туда запихивать, такой же эффект.
-
может кто повторить действия в nokia4ever (04.08.14 01:30) [6] для проверки?
-
-
все, разобрался
-
Разобрался ? Расскажи, в чём была ошибка !
-
2 DimaBr.. Спасиб, что напомнили.
+++
ах да, сорр. замотался тогда, забыл совсем про вопрос, помню что ответил.
этот сайт помогал мне с ответами (несмотря на всякие козни :) мелкие) и вообще для пишущих на Delphi - RU - всегда поделюсь.
ща...
оказалось, что все мои потуги отобразить значок - правильные. его можно вообще где угодно пихать на регистрацию. способов множество (и вариантов реализации).
проблема отняла почти 4 дня на изучение. на разные эксперименты (ппц, в разных вариантах исполнения пихал и там и сям).
после [6]
когда дошло, в чем дело, хотелось кого-то убить :)
лазия по форумам разрабов (вопрос не принимают, без лицензии). нашел похожий. выцепил через почту (японец и немец там), задвинул им тему в почту + обчитался документации так, что потом еще день с открытыми глазками спал и снились бескрайние Эмбаркадеро..
а дело оказалось в новых правилах IDE версии (думаю что старше XE2 - не уверен), где ОКАЗЫВАЕТСЯ, что среда (IDE) сама решает, какие компоненты нужны на загрузку.
Значится так (примерное мое представление об алгоритме).
1. пишем свой простой компонент (выше пример) 2. регим. рибутим ИДЕ - ок, ИДЕ видит - новый - показывает его на сплаше. 3. рибутим еще, ИДЕ видит - не применяется, принимает решение - не нужен на сплаш. хотя сам компонент после загрузки среды и нового проекта доступен. только теперь начинает доходить для чего сделали :)
терь понятно, почему 1 раз? :)
самое интересное
-
Удалено модератором Примечание: Создание пустых сообщений
-
Удалено модератором Примечание: Создание пустых сообщений
-
еще момент! важный.
IDE на регистрацию ведет свой каталог в реестре виндов (!). Вот уж.. если он пуст - показывает все, если нет, по своему желанию. ну думаю тему поизучаете кому нада.
с уважением.
-
Удалено модератором Примечание: Создание пустых сообщений
-
снова забыл. неудобно.
все, спать пора, даю.
_http ://rghost.ru/57367491
как ранее - убрать _ и пробелы после http
|