Дмитрий Кузан дата публикации 25-12-2007 03:04 Меня всегда, как разработчика компонентов интересовала, как в новых версиях Delphi (начиная с вер. 2005) выводится информация о загружаемых пакетах в Splash-окне которое показывается при загрузке самой среды (см.рис 1).
рис.1
Очень хотелось сделать так же для собственного сборника компонент. Долго не доходили руки, однако время пришло и наконец-то ежедневную сквозь рутину я добрался до решения, которое и хочу вам представить.
Первое что нам нужно сделать это создать ресурс и поместить в него пиктограмму, которую мы будем выводить. Например, ресурс назовем RegisterSplashScreen.res и битмап поместим в секцию SPLASH (см.рис 2).
рис.2
Далее в модуле, где происходит регистрация компонент, подключим данный ресурс:
Так как вывод на spalch-окно появился совсем недавно, а именно начиная с Delphi 2005 и выше мы должны предусмотреть, что пакет может собираться в более ранних версиях поэтому мы должный определить версию компилятора в котором собирается пакет. Делается это с помощью предопределенных директив VERxx где версия Delphi представлена след.константами:
- VER80 -— Delphi 1
- VER90 -— Delphi 2
- VER93 -— C++Builder 1
- VER100 -— Delphi 3
- VER110 -— C++Builder 3
- VER120 -— Delphi 4
- VER130 -— Delphi 5
- VER140 -— Delphi 6
- VER150 -— Delphi 7
- VER160 -— Delphi 8
- VER170 -— Delphi 2005 (9)
- VER180 -— Delphi 2006 (10)
- VER185(190) — Delphi 2007 (11)
Используя эти предопределенные директивы, определим собственную директиву, по которой будем определять — разрешать или нет вывод в Splash-окно или нет. Определяем так.
Далее в секцию Uses подключим модуль ToolsAPI.pas при условии что версия Delphi 2005 и выше -
Uses Classes, ToolsAPI, Graphics,
DesignIntf;
|
|
Подводные камни: Почему-то в ToolsAPI.pas вместо модуля uDockForm был указан DockForm в секции Uses. Соответственно ToolsAPI не компилировался. После поисков — DockForm.pas был не найден, зато был найден uDockForm.pas. После исправления DockForm на uDockForm модуль ToolsAPI.pas скомпилировался на ура.
Ну и наконец создадим процедуру вывода RegisterWithSplashScreen и используя метод SplashScreenServices.AddPluginBitmap выведем наш логотип и название пакета на Splach-окно, при условии что версия Delphi позволяет—
procedure RegisterWithSplashScreen;
var
Bmp: TBitmap;
begin
Bmp := TBitmap.Create;
Bmp.LoadFromResourceName( HInstance, 'SPLASH' );
try
SplashScreenServices.AddPluginBitmap('KD Pack - Component Package',
Bmp.Handle, False, 'KDPack - Kuzan component package', '1.0.0.0');
finally
Bmp.Free;
end;
end;
|
|
в методе регистрации внесем код вызывающий наш процедуру при первичной регистрации компонента.
procedure Register;
begin
….
RegisterWithSplashScreen;
….
end;
|
|
Компилируем, перезапускаем Delphi и любуемся.
[Пакеты (BPL, DPK ...)] [Настройка среды (IDE)]
Обсуждение материала [ 27-02-2012 04:35 ] 7 сообщений |