Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #50, ЯНВАРЬ 2005 г.

Real audio is not skinnable?

Woz3qK (woz3qk@mail.ru)

Спецвыпуск: Хакер, номер #050, стр. 050-074-2


[Main] //самая первая секция

SizeX=300 //размеры окна по ширине

SizeY=200 //и высоте

BorderStyle=1 //стиль рамки (1-без рамки)

[BackImage] //секция фоновой картинки

SizeX=100

SizeY=100

PosX=0 //позиция в пикселах местоположения

PosY=0 //элемента относительно формы

BackImage=back.jpg //собственно имя картинки

[Play] //секция кнопки

SizeX=80

SizeY=20

PosX=50

PosY=50

OnDown=Play1.bmp //картинка, отображаемая при нажатии

OnUp=Play2.bmp //и отпускании

[Stop] //секция второй кнопки

SizeX=30

SizeY=25

PosX=0

PosY=0

OnDown=Stop1.bmp

OnUp=Stop.bmp

[Pause] //секция третей кнопки

SizeX=30

SizeY=25

PosX=35

PosY=0

OnDown=Pause1.bmp

OnUp=Pause2.bmp

[Track] //секция метки

SizeX=30

SizeY=25

PosX=80

PosY=50

Text=It is our label! //текст, выводимый в метке

FontName=Arial //шрифт текста

FontColorR=255 //цвет фона метки

FontColorG=255 //а это три ее составляющие

FontColorB=255

[End]

Все, что идет после символов "//" - считается комментарием. Писать это в файле не нужно: наша программа это не оценит :).

Как видно из содержания, мы имеем дело с простым INI-файлом. [Main], [BackImage], [Play] - это секции. В этих секциях хранятся "ключи", а в них - значения. Здесь:

PosX - позиция на форме по горизонтали; PosY - позиция на форме по вертикали; SizeX, SizeY - размеры элемента; BackImage - фоновая картинка; OnDown - картинка, отображаемая при нажатии на элемент; OnUp - картинка, отображаемая при отпускании кнопки мыши; Text - текст, отображаемый на элементе; FontName - шрифт текста; FontColorR, FontColorG, FontColorB - составляющие цвета (красный, зеленый и синий соответственно). Для того чтобы использовать INI-файлы, надо объявить в uses inifile. Основными функциями, которыми мы будем пользоваться, будут ReadString и ReadInteger - чтение из INI-файла строки и числа. Им передается имя секции, параметр и значение, принимаемое по умолчанию.

А теперь разберемся, как с этим работать. Для начала объявим переменную skinINI типа TINIFile и сделаем реакцию формы на событие OnCreate (Form1 > Events > OnCreate), чтобы наш файл обрабатывался прямо при запуске программы. Значения в файлах INI могут быть строками, целочисленными переменными, переменными булевского типа и т.д. Большего нам и не надо. Вернее, надо узнать путь к программе. В этом нам поможет функция Cut_Path. Она вернет нам путь к программе.

function Cut_Path: string;

var s: string;

i: shortint;

begin

{получаем полный путь к программе}

s:=application.ExeName;

i:=Length(s);

{удаляем имя файла и оставляем только путь}

while (s[i]<> '\') do

begin

delete(s,i,1);

dec(i);

end;

{возвращаем путь к директории с программой}

Cut_Path:=s;

end;

Предварительно, кстати, надо кинуть на форму необходимые элементы. У меня это 4 image, 2 lable, 1 image (фон окна), остальные три я использую как кнопки. На самом деле использовать картинки удобнее: кнопку как компонент нельзя украсить толковой картинкой, а если использовать BitBtn, то при выделении кнопки появляется "ореол" - прямоугольное выделение кнопки. Имэйдж же не выделяется, и с ним можно работать как с кнопкой, поскольку у него тоже есть события на нажатие (OnMouseDown), на наведение (OnMouseMove), на отпуск кнопки мыши (OnMouseUp). И еще один момент - будет солиднее не использовать при выводе картинок чтение из файла на диске. Во-первых, это грузит хард, если их много, и при выводе новой картинки будет видно мигание и торможение. Так что заведем переменные sPlayMDown, sPlayMUp: TPicture. При чтении с INI-файла мы загрузим в эти переменные наш image.

Назад на стр. 050-074-1  Содержание  Вперед на стр. 050-074-3