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

Выделка шкурок в домашних условиях

6th (6th@mail.ru)

Спецвыпуск: Хакер, номер #053, стр. 053-080-3


Раз уж взялись писать плеер, кроме компонентов шкурного механизма на форму нужно кинуть TMediaPlayer (у меня в сорцах – Player) и указать в его свойствах Visible=False. Кнопочки медиаплеера для "по умолчанию", конечно, ничего, но мы сделаем свои, поддерживающие шкурки. В принципе, можно натянуть скин и на стандартный TButton, но гораздо проще сразу воспользоваться готовым компонентом spSkinButton.

Теперь необходимо разместить на форме шесть кнопок, которые должен иметь любой уважающий себя MP3-плеер: Play, Pause, Stop, Next, Forward и Open. Чтобы каждый элемент формы был в шкурке, каждый из них должен иметь параметр SkinData, связанный с spSkinData.

Кнопки кнопками, но какой плеер без плейлиста? SpListBox на форму! В программе мы не станем заморачиваться с форматированием вывода в плейлисте, а ограничимся добавлением туда полных имен файлов. Не очень эстетично, зато просто и быстро (основные достоинства Delphi - прим. ред.).

Натянуть на графические элементы формы шкурку очень просто, в DynamicSkinForm это делается всего одной строчкой. Правда, эта строчка должна выполняться в процессе загрузки программы, чтобы пользователь вдруг не увидел программу без шкурки ;).

procedure TfrMain.FormCreate(Sender: TObject);

begin

//загружаем скин из файла

spSkinData.LoadFromCompressedFile('BlueLight.skn');

//плеер – на начало плейлиста

Player.FileName := spListBox.Items[0];

Player.Open;

end;

DynamicSkinForm может хранить скины в нескольких форматах, но нам удобнее всего шкуры, содержащиеся в skn-файлах. В таком виде вся шкура содержится всего в одном файле, а так как файл сжат, он получается очень скромных размеров.

Удобно!

Поехали дальше. Было бы неплохо добавить возможность смены скинов прямо в процессе работы плеера, чтобы не только ты, но и пользователь мог выбрать понравившуюся тему. Реализуем это в виде всплывающей менюшки, для чего положим на форму spOpenSkinDialog, spSkinPopupMenu и создадим три пункта меню: Set new skin (для установки шкурки), Transparent (для установки прозрачности шкурки) и Exit (понятно для чего). Заставим это работать следующим образом:

procedure TfrMain.N1Click(Sender: TObject);

begin

//покажем окно выбора скина и загрузим его в spSkinData

if spOpenSkinDialog.Execute then

spSkinData.LoadFromCompressedFile(spOpenSkinDialog.FileName);

end;

procedure TfrMain.N2Click(Sender: TObject);

begin

//True/false параметр AlphaBelnd задает прозрачность

N2.Checked := not N2.Checked;

spDynamicSkinForm.AlphaBlend := N2.Checked;

end;

procedure TfrMain.N3Click(Sender: TObject);

begin

Close;

end;

Теперь, стукнув по правой кнопке мыши, можно поменять шкурку у плеера или включить/выключить прозрачность. Это, конечно, здорово, но было решено написать плеер, а в нем одними скинами сыт не будешь. Нужно чтобы все кнопочки работали, а музыка играла, поэтому добавляем на форму spOpenDialog и пишем:

Назад на стр. 053-080-2  Содержание  Вперед на стр. 053-080-4