Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Подземелье Магов
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
 
 08:40 Geo
 
 
Во Флориде и в Королевстве сейчас  08:42[Войти] | [Зарегистрироваться]

Вывод информации о пакете в Splash

Дмитрий Кузан
дата публикации 25-12-2007 03:04

Меня всегда, как разработчика компонентов интересовала, как в новых версиях Delphi (начиная с вер. 2005) выводится информация о загружаемых пакетах в Splash-окне которое показывается при загрузке самой среды (см.рис 1).


рис.1

Очень хотелось сделать так же для собственного сборника компонент. Долго не доходили руки, однако время пришло и наконец-то ежедневную сквозь рутину я добрался до решения, которое и хочу вам представить.

Первое что нам нужно сделать это создать ресурс и поместить в него пиктограмму, которую мы будем выводить. Например, ресурс назовем RegisterSplashScreen.res и битмап поместим в секцию SPLASH (см.рис 2).


рис.2

Далее в модуле, где происходит регистрация компонент, подключим данный ресурс:

{$R RegisterSplashScreen.res}

Так как вывод на 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-окно или нет. Определяем так.

{$IFDEF VER170}      // Delphi 9.0
  {$DEFINE SPLASH}
{$ENDIF}                          

{$IFDEF VER180}      // Delphi 10.0
  {$DEFINE SPLASH}
{$ENDIF}

{$IFDEF VER185}      // Delphi 11.0
  {$DEFINE SPLASH}
{$ENDIF}

Далее в секцию Uses подключим модуль ToolsAPI.pas при условии что версия Delphi 2005 и выше -

Uses Classes,   {$IFDEF SPLASH}   ToolsAPI, Graphics,   {$ENDIF}    
        DesignIntf;

Подводные камни: Почему-то в ToolsAPI.pas вместо модуля uDockForm был указан DockForm в секции Uses. Соответственно ToolsAPI не компилировался. После поисков — DockForm.pas был не найден, зато был найден uDockForm.pas. После исправления DockForm на uDockForm модуль ToolsAPI.pas скомпилировался на ура.

Ну и наконец создадим процедуру вывода RegisterWithSplashScreen и используя метод SplashScreenServices.AddPluginBitmap выведем наш логотип и название пакета на Splach-окно, при условии что версия Delphi позволяет—

{$IFDEF SPLASH}
procedure RegisterWithSplashScreen;
var
  Bmp: TBitmap;
begin
  // Register TestSplash Icon on Delphi Splash Screen
  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;
{$ENDIF}

в методе регистрации внесем код вызывающий наш процедуру при первичной регистрации компонента.

{ Общая регистрация компонентов }
procedure Register;
begin
  ….   
 {$IFDEF SPLASH}
    RegisterWithSplashScreen;
{$ENDIF}
  ….
end;

Компилируем, перезапускаем Delphi и любуемся.




Смотрите также материалы по темам:
[Пакеты (BPL, DPK ...)] [Настройка среды (IDE)]

 Обсуждение материала [ 27-02-2012 04:35 ] 7 сообщений
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования