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. |