Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

Видеокурс программиста и крэкера 5D 2O17
(актуальность: август 2O17)
Свежие инструменты, новые видеоуроки!

  • 400+ видеоуроков
  • 800 инструментов
  • 100+ свежих книг и статей

УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Разукрасьте Ваше приложение (Skins)


Открылся благотворительный фонд сбора средств на новый Boening 747 для глобальной реконструкции здания Microsoft.

SkinForm - это компонент, который поможет Вам создать "не-квадратное" окно и вто же время применить к нему так называемую технологию "skin", наподобие таких популярных программ как WinAMP, WPlay ..., зачем тратить часы на программирование, когда это можно сделать за пару минут! Скачать сам компонент можно с http://www.qwerks.com/download.asp?ProductID=2447. WYSIWYG скин билдер, который входит в состав архива, предназначен для создания информационного файла, описывающего структуру нашей формы. Всё, что надо сделать - это создать несколько картинок, и нарисовать кнопки, текстовые поля и т.д.. Есть возможность постоянно смотреть превью!

Теперь посмотрим, какие нам предоставлены возможности:

  • поддержка файлов bmp и jpeg
  • поддержка графических кнопок, а так же переключающиеся и радои кнопки
  • поддержка текста, графического текста и цифр
  • поддержка графического track bar
  • поддержка multi skin-ов, то есть Вы можете создать свой скин для каждой формы приложения
  • поддержка внутренних скинов, то есть скины могут быть сохранены в ресурсном файле

Теперь наши действия:

  • Создаём bitmap файлы для скина
  • Запускаем Skin Builder для создания информационного файла
  • Создаём новый проект.
  • Помещаем компонент TSkinForm в форму
  • Компилируем

Посмотрим на script файл, созданный SkinBuilder-ом:


 [VERSION]
 Ver=210 // Версия скин-файла 
 
 [BITMAPINFO]
 MaskBitmap=PlayerMask.bmp
 // Bitmap файл маски поверхности формы 
 MouseUpBitmap=PlayerMain.jpg
 // Bitmap файл, если кнопка мыши была отпущена 
 MouseDownBitmap=PlayerSel.jpg
 // Bitmap файл, если кнопка мыши была нажата 
 MouseOnBitmap=PlayerSel.jpg
 // Bitmap файла, если на объекте находится курсор мыши 
 NumbersBitmap=
 // Bitmap файл для графических цифр (не обязательно)
 TextBitmap=
 // Bitmap файл для графического текста (не обязательно) 
 
 [HOTAREAINFO]
 Count=19 // Общее количество кнопок 
 // Описание каждой кнопки 
 // number=ID, top, left, width, height, hint [, button state, group name] 
 // Значения в [ ] не обязательны 
 1=BUTTON_PLAY, 54, 165, 34, 35, Play/Pause
 2=BUTTON_STOP, 129, 165, 19, 35, Stop
 3=BUTTON_NEXT, 90, 165, 18, 17, Next
 4=BUTTON_PREV, 109, 165, 18, 17, Previous
 ...
 
 [DISPLAYINFO]
 Charset=1 // Charset текстовой области 
 Count=3 // количество тектовых полей 
 // Описание каждой текстовой области 
 // number=ID, font name, bold, italic, size, color, top, left, style, default text, hint, width, height 
 1=TEXT_LEN, Arial, TRUE, FALSE, 9, $00366835, 116, 137, Normal, [00:00], Length, 51, 18
 2=TEXT_POS, Arial, TRUE, FALSE, 12, $00366835, 55, 133, Normal, 00:00, Position, 52, 23
 3=TEXT_SONG, MS Sans Serif, FALSE, FALSE, 7, $00366835, 56, 112, Normal, Song name, Song name, 111, 21
 
 [TRACKBARINFO]
 Count=2 // Количество track-баров 
 // Описание каждого трак-бара 
 // number=ID, trackbar bitmap file, trackbar bitmap file, top, left, length, style, position, hint 
 1=TRACKBAR_VOLUME, TrackBar.BMP, TrackBar.BMP, 79, 205, 88, H, 65, Volume
 2=TRACKBAR_POS, TrackBar.BMP, TrackBar.BMP, 79, 217, 88, H, 0, Time
 

Ну вот Ваше приложение и разукрасилось и, как видите, безо всякого программирования.

Теперь можно добавить код, чтобы перехватывать события на кнопках - MouseUp, Down, Over ...

Далее следует пример кода:


 ...
 
 procedure TForm1.FormCreate(Sender: TObject);
 begin
   //Загружаем скин файл
   SkinForm1.LoadDefaultSkin;
   SkinForm1.SetDisplayText('VOLUME', IntToStr(SkinForm1.GetTrackBarPos('TRACKBAR_VOLUME')));
   SkinForm1.SetDisplayText('TIME', IntToStr(SkinForm1.GetTrackBarPos('TRACKBAR_POS')));
   SkinForm1.SetTrackBarMinMax('TRACKBAR_VOLUME', 20, 80);
 end;
 
 procedure TForm1.SkinForm1MouseUpNotify(ID: string; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 var
   pos: TPoint;
 begin
   if (Button = mbLeft) then
   begin
     if ID = 'BUTTON_EXIT' then
       Close;
     if ID = 'BUTTON_MINIMIZE' then
       Form1.Perform(WM_SYSCOMMAND, SC_MINIMIZE, 0);
 
     if ID = 'BUTTON_MENU' then
     begin
       pos := ClientToScreen(Point(X, Y));
       PopupMenu1.Popup(pos.x, pos.y);
     end;
   end;
 
   if (Button = mbRight) then
   begin
     pos := ClientToScreen(Point(X, Y));
     PopupMenu1.Popup(pos.x, pos.y);
   end;
 
 ...
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS