|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
создание таймера длительности mp3 плеера в проигрывателе
Здравствуйте. Не могу до думматься как реализовать длительность трека при его проигрывании, то есть по мере возрастания, от 0 секунд до к примеру 4 мин. Мешают милисекунды, когда я пытаюсь вывести в label длительность трека media.position он показывает к примеру 12995, т.е. 12 секунд и эти присловутые милисекунды. Есть способ от них избавиться?
|
#2
|
|||
|
|||
Цитата:
Код:
var mp3Length : Integer; begin mp3Length := ... label1.Caption := IntToStr(Round(mp3Length/1000)); |
#3
|
|||
|
|||
Цитата:
|
#4
|
|||
|
|||
Вопрос на счет объекта trackbar. Он у меня передвигается, по мере проигрывания песни, все хорошо, но перемотка у меня работает, только если я непосредственно перенесу прямоугольник куда-нибудь по линии, а вот если я щелкаю по линии ничего не происходит. Вопрос: как заставить прогу определять щелчок по линии и соответственно передвигать туда бегунок?
|
#5
|
||||
|
||||
проводить расчет по событию OnClick на тракбаре (переводить мышиную координату в позицию), т.к. просто по клику на полосе ползунок передвигается на одну страницу (Page) в сторону клика
|
#6
|
|||
|
|||
Дак в trackbar нету события onclick, при помощи чего тогда заставить реагировать прогу но это событие?
|
#7
|
||||
|
||||
Тогда просто добавь это свойство ему. Или создай аналогичный сласс:
Код:
type TTrackBar=class(ComCtrls.TTrackBar) private public property OnMouseDown; property OnMouseUp; end; Код:
TrackBar1.OnMouseDown:=TrackBar1MouseDown; |
#8
|
|||
|
|||
событие onChange есть
|
#9
|
||||
|
||||
Цитата:
Код:
procedure TForm1.TrackBar1Change(Sender: TObject); var GlobalPos,LocalPos:TPoint; begin GetCursorPos(GlobalPos); LocalPos:=TrackBar1.ScreenToClient(GlobalPos); TrackBar1.Position:=round((trackBar1.Max/(trackBar1.Width-28))*(LocalPos.X-14)); end; |
#10
|
|||
|
|||
Цитата:
|
#11
|
||||
|
||||
Пожалуйста. Типа так? :
Код:
procedure TForm1.TrackBar1Change(Sender: TObject); var GlobalPos,LocalPos:TPoint; begin //для доступа к процедуре GetCursorPos нужно подключить модуль QControls GetCursorPos(GlobalPos);//Получаем глобальные координаты курсора(на весь экран) LocalPos:=TrackBar1.ScreenToClient(GlobalPos);//переводим глобальные координаты в область компонента TrackBar1.Position:=round((trackBar1.Max/(trackBar1.Width-28))*(LocalPos.X-14));// //trackBar1.Max/trackBar1.Width - значение, соответствующее сдвигу "позиции" трэкбара при сдвиге на 1 пиксель //(trackBar1.Max/trackBar1.Width)*LocalPos.X - умножаем это значение на количество пикселей сдвига (позиция X мыши) // значения 28, 12 - взяты из потолка, это компенсация отступов от края трэкбара до начала отсчета) end; |
Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение: | ||
sandysman (29.03.2012)
|
#12
|
||||
|
||||
еще как вариант в дочернем от TTrackBar классе обрабатывать мышиные клики (в том числе сделать нотификации опускания кнопки мыши, ее поднятие и проч так "необходимые" события)
Код:
... procedure MouseLBtDown (var Message: TMessage); message WM_LBUTTONDOWN;// опускание левой кнокпи мыши procedure MouseLBtUp(var Message: TMessage); message WM_LBUTTONUP;//поднятие левой кнопки мыши .. как то так.... |
Этот пользователь сказал Спасибо cotseec за это полезное сообщение: | ||
sandysman (29.03.2012)
|
#13
|
|||
|
|||
Спасибо за коментарии, примерно так и предполагал) Не знал, что есть функция получения глобальных координат курсора, и спасибо за процедуры нажатия и отпуска мыши, я как раз хотел задать вопрос про отпускание правой кнопки мыши, но теперь думаю справлюсь)
|
#14
|
|||
|
|||
Цитата:
|
#15
|
||||
|
||||
Цитата:
Пишу программы за еду. __________________ |