Delphi. Урок 7.2. Компоненты закладки System (TTimer, TMediaPlayer) |
Автор megabax | |
09.07.2009 г. | |
Компоненты закладки System (TTimer, TMediaPlayer)На этом уроке мы познакомимся с некоторыми компонентами закладки System. Начнем с таймера (TTimer)*.
Давайте положим его на форму и назовем tmClockEvents, а самой форме присвоим имя frmClock. Так же положим на форму метку lbClock (компонент TLabel) и сделаем у нее шрифт по крупнее (свойство Font). Теперь напишем обработчик события OnTime таймера (TTimer).
procedure TfrmClock.tmClockEventsTimer(Sender: TObject); begin lbClock.Caption:=TimeToStr(Time); end;
Еще, один немаловажный момент. Давайте сразу привыкать давать формам нормальные заголовки. Присвоим свойству Caption формы значение «Часы». Все, теперь можно запустить программу:
Теперь перейдем к компоненту TMediaPlayer*.
Для демонстрации его возможностей напишем более программу проигрывания музыкальных файлов. И так, положим на форму сам компонент TMediaPlayer и назовем его mpPlay. Так же добавим к форме TListBox с именем lbPlayList, кнопочки btnAdd и btnDelete с заголовками «Добавить» и «Удалить» соответственно, диалог открытия файлов odPlay и метку lbFileName. Саму форму назовем frmPlay и установим у нее свойство Caption равным «Проигрыватель музыки». Настроим фильтр диалога открытия файлов, что бы он открывал только файлы mp3.*
У компонента TMediaPlayer есть свойство VisibleButtons. Раскроем (нажав на плюсик) и установим в false значения следующих свойств: · btStep. · btBack. · btRecord. · btEject.*
Вот так должна выглядеть форма, когда мы разместим все нужные нам компоненты*
Теперь займемся программированием. По кнопке «Добавить» у нас должен быть вызван диалог выбора файла, который мы хотим добавить в плэйлист. Для этого напишем обработчик для кнопки обработчик события OnClick:
procedure TfrmPlay.btnAddClick(Sender: TObject); begin if odPlay.Execute then lbPlayList.items.Add(odPlay.FileName); end;
Теперь обработчик OnClick кнопки «Удалить»:
procedure TfrmPlay.btnDeleteClick(Sender: TObject); begin if lbPlayList.ItemIndex>-1 then lbPlayList.Items.Delete(lbPlayList.ItemIndex); end;
И немного комментариев к программе: items.Add – думаю, вы помните с того момента, когда мы изучали компонент ListBox (список) – это добавление элемента в список. Items.Delete – это удаление. В качестве параметра передаем ему номер удаляемого элемента (счет начинается с нуля). ItemIndex – это номер выделенного в списке элемента. Если ни один элемент не выделен – то значение этого свойства равно минус 1. Теперь напишем обработчик события OnClick для списка:
procedure TfrmPlay.lbPlayListClick(Sender: TObject); begin mpPlay.FileName:=lbPlayList.Items[lbPlayList.ItemIndex]; mpPlay.Open; mpPlay.Play; lbFileName.Caption:=mpPlay.FileName; end;
В данном обработчике мы изменяем имя файла, которое проигрывает наш MediaPlayer. Затем отрываем его:
mpPlay.Open;
и запускаем процесс проигрывания:
mpPlay.Play;
еще внизу списка изменяем название проигрываемого файла:
lbFileName.Caption:=mpPlay.FileName;
Далее, начинается самое интересное, обработчик OnClick самого MediaPlayer. В нем мы изучим новый оператор case.
procedure TfrmPlay.mpPlayClick(Sender: TObject; Button: TMPBtnType; var DoDefault: Boolean); begin case Button of btNext: begin mpPlay.Stop; if lbPlayList.ItemIndex<>lbPlayList.Items.Count-1 then lbPlayList.ItemIndex:=lbPlayList.ItemIndex+1 else lbPlayList.ItemIndex:=0; mpPlay.FileName:=lbPlayList.Items[lbPlayList.ItemIndex]; mpPlay.Open; mpPlay.Play; DoDefault:=false; end; btPrev: begin mpPlay.Stop; if lbPlayList.ItemIndex<>0 then lbPlayList.ItemIndex:=lbPlayList.ItemIndex-1 else lbPlayList.ItemIndex:=lbPlayList.Items.Count-1; mpPlay.FileName:=lbPlayList.Items[lbPlayList.ItemIndex]; mpPlay.Open; mpPlay.Play; DoDefault:=false; end; btStop: begin mpPlay.Position:=0; DoDefault:=false; end; end; lbFileName.Caption:=mpPlay.FileName; end;
И так, несколько комментариев к программе. В обработчик события в качестве параметра передается Button, в котором храниться код нажатой кнопки. Мы обрабатываем три случая: · Нажата кнопка * (следующая песня). Ее код btNext · Нажата кнопка * (предыдущая песня). Ее код btPrev. · Нажата кнопка * (остановить). Ее код btStop.
Еще обратим внимание на параметр DoDefault. Заметили что перед ним оператор var, а перед другими параметрам его нет? Если этого параметра нет, то параметр будет являться локальной переменной. А если перед параметром стоит var, то это означает, что изменяя значение переменной внутри процедуры, мы изменяем и значение внешней переменной, переданной в процедуру в качестве параметра. В обработчике данного события параметр DoDefault объявлен как var потому что он возвращает признак, нужно ли использовать стандартный обработчик события. В данном случае, когда мы используем свой обработчик, стандартный обработчик использовать не нужно. Поэтому мы выполняем оператор DoDefault:=false;. Теперь насчет оператора case, с которого мы и начали изучать обработчик. В конструкции
case Button of
мы анализируем значение параметра Button. В зависимости от его значения выполняется соответствующая ветка программы.
В общем случае синтаксис оператора такой:
Case [Параметр] of [Значение1]: [ветка значения 1]; [Значение2]: [ветка значения 2]; … [ЗначениеN]: [ветка значения N]; else [ветка иначе]; end;
В качестве ветки оператора case может быть как один оператор, так и блок операторов, заключенный в begin … end.
Если пользователь нажал на кнопку «Следующий», то программа переведет указатель на следующий элемент списка значений, после этого и переоткроет музыкальный файл. Если же у нас последний элемент списка, то программа спозиционирует на первый элемент списка.
if lbPlayList.ItemIndex<>lbPlayList.Items.Count-1 then lbPlayList.ItemIndex:=lbPlayList.ItemIndex+1 else lbPlayList.ItemIndex:=0;
Аналогично работает и ветка кнопки «Предыдущий», только там идет уменьшение на единицу:
if lbPlayList.ItemIndex<>0 then lbPlayList.ItemIndex:=lbPlayList.ItemIndex-1 else lbPlayList.ItemIndex:=lbPlayList.Items.Count-1;
Еще у нас есть ветка кнопки «Стоп». В ней мы просто сбрасываем позицию проигрывателя командой
mpPlay.Position:=0;
Вот примерно у нас должна выглядеть запущенная программа
Скриншоты, помеченные знаком * , являются цитатами и иллюстрациями программного продукта "Delphi", авторское право на который принадлежит "Borland Software Corporation".
|
|
Последнее обновление ( 06.11.2011 г. ) |
« След. | Пред. » |
---|