Выделка шкурок в домашних условиях 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 и пишем: |