Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.11.2012, 19:39
Amzi Amzi вне форума
Прохожий
 
Регистрация: 10.10.2012
Сообщения: 26
Репутация: 10
По умолчанию Перемотка в плеере (Trackbar)

Здравствуйте,нужна помощь,сделал плеер на bass.dll приделал Trackbar (AdvTrackBar1 TMS Component Pack) в качестве перемотки ,проблема в следующем если прокрутить ползунок (к примеру больше чем на 1,45 сек) он пропадает и появляется на начальной позиции,песня же продолжает играть как решить проблему?

Последний раз редактировалось Amzi, 07.11.2012 в 20:02.
Ответить с цитированием
  #2  
Старый 08.11.2012, 08:45
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Смех

Цитата:
Сообщение от Amzi
как решить проблему?
найти ошибку в программе. к примеру в WinAmp при перемещниии ползунка такого "эффекта" нет.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 08.11.2012, 09:56
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Amzi
Здравствуйте,нужна помощь,сделал плеер на bass.dll приделал Trackbar (AdvTrackBar1 TMS Component Pack) в качестве перемотки ,проблема в следующем если прокрутить ползунок (к примеру больше чем на 1,45 сек) он пропадает и появляется на начальной позиции,песня же продолжает играть как решить проблему?

Может это глюк в самом компоненте, а может и нет, скиньте код программы.
Ответить с цитированием
  #4  
Старый 08.11.2012, 12:52
Amzi Amzi вне форума
Прохожий
 
Регистрация: 10.10.2012
Сообщения: 26
Репутация: 10
По умолчанию

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  
Старый 08.11.2012, 17:24
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

У меня на 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;
OnTimer:
Код:
if ProgressMouseDown = False then
  PlayBar.Position := BASS_ChannelGetPosition(Channel, 0);  

ProgressMouseDown - глобальная переменная типа Boolean.

Попробуйте вышеприведенный код, скопировал с проекта

Последний раз редактировалось sariman, 08.11.2012 в 17:28.
Ответить с цитированием
  #6  
Старый 08.11.2012, 18:55
Amzi Amzi вне форума
Прохожий
 
Регистрация: 10.10.2012
Сообщения: 26
Репутация: 10
По умолчанию

Цитата:
Сообщение от sariman
Попробуйте вышеприведенный код
Спасибо,но проблема осталась...
Ответить с цитированием
  #7  
Старый 08.11.2012, 23:12
Аватар для sariman
sariman sariman вне форума
Активный
 
Регистрация: 19.11.2011
Адрес: Украина, Луганская обл.
Сообщения: 244
Версия Delphi: 7, XE, Lazarus
Репутация: выкл
По умолчанию

Значит проблема в самом компоненте, попробуйте кинуть обычный trackbar и попробуйте.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:14.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter