|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Перемотка в плеере (Trackbar)
Здравствуйте,нужна помощь,сделал плеер на bass.dll приделал Trackbar (AdvTrackBar1 TMS Component Pack) в качестве перемотки ,проблема в следующем если прокрутить ползунок (к примеру больше чем на 1,45 сек) он пропадает и появляется на начальной позиции,песня же продолжает играть как решить проблему?
Последний раз редактировалось Amzi, 07.11.2012 в 20:02. |
#2
|
||||
|
||||
Цитата:
Пишу программы за еду. __________________ |
#3
|
||||
|
||||
Цитата:
Может это глюк в самом компоненте, а может и нет, скиньте код программы. |
#4
|
|||
|
|||
procedure TForm_Player.Player;
Код:
//полоса проигрывания AdvTrackBar1.Min:=0; AdvTrackBar1.Max:=bass_ChannelGEtLength(Channel, 0) -1; Код Trackbar-а Событие на mouse down Код:
var p: real; begin if mode<>play then Exit; p:=AdvTrackBar1.Max/advTrackBar1.Width; AdvTrackBar1.Position:=round(x*p); bass_ChannelSetPosition(Channel, AdvTrackBar1.Position, 0); end; Событие на Mouse move Код:
var p: real; begin if mode<>play then Exit; if ssleft in shift then //если нажата левая кнопка мыши begin p:=AdvTrackBar1.Max/AdvTrackBar1.Width; AdvTrackBar1.Position:=round(x*p); bass_ChannelSetPosition(Channel, AdvTrackBar1.Position, 0); end; end; Событие на On Timer Код:
AdvTrackBar1.Position:=bass_channelGetPosition(channel,0); |
#5
|
||||
|
||||
У меня на MouseDown:
Код:
if GetKeyState(1) shr 31 = 1 then begin PlayBar.Position := Round(X * (PlayBar.Max / PlayBar.Width)); ProgressMouseDown := True end; На MouseMove: Код:
// Если была нажата левая клавиша мышки, то продолжаем if GetKeyState(1) shr 31 = 1 then PlayBar.Position := Round(X * (PlayBar.Max / PlayBar.Width)); MouseUp: Код:
// Если была нажата левая клавиша, то продолжаем if Button = mbLeft then begin BASS_ChannelSetPosition(Channel, PlayBar.Position, 0); ProgressMouseDown := False end; Код:
if ProgressMouseDown = False then PlayBar.Position := BASS_ChannelGetPosition(Channel, 0); ProgressMouseDown - глобальная переменная типа Boolean. Попробуйте вышеприведенный код, скопировал с проекта Последний раз редактировалось sariman, 08.11.2012 в 17:28. |
#6
|
|||
|
|||
Цитата:
|
#7
|
||||
|
||||
Значит проблема в самом компоненте, попробуйте кинуть обычный trackbar и попробуйте.
|