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

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Открылся благотворительный фонд сбора средств на новый 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;

{/codecitation}

Добавить комментарий