![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с TrackBar и Timer одновременно [D7, WinXP]
JaspeR © (2006-03-06 10:25:00)procedure TForm1.Timer3Timer(Sender: TObject);
begin
ifmediaplayer1.FileName<>'' then
begin
trackbar2.Position:=mediaplayer1.Position;
label4.Caption:= floattostrf(100/mediaplayer1.Length*mediaplayer1.Position,ffFixed,0,0);
end;
end;
как вы поняли, это регулятор положения.
Только с ним воспроизведение тормозит!!!
как сделать, чтоб не тормозило???
Locke (2006-03-11 15:20:00) [1]спасибо
antonn (2006-03-11 11:15:00) [2]или использовать другой "ползунок", например TSlider (slider.pas, в инете должен быть), у него раздельные события перетаскивания и перемещения
Virgo_Style (2006-03-11 10:47:00) [3]Шли годы. Смеркалось (с).
Что происходит? Происходит вот что.
В Timer3Timer происходит смещение TrackBar2, поэтому вызывается
TrackBar2.OnChange, которая, в свою очередь, меняет MediaPlayer.Position.
Перемотка же - процесс небыстрый, отсюда тормоза.
Что надо сделать? Очевидно, надо сделать так, чтобы при изменении TrackBar.Position в TimerTimer не изменялся MediaPlayer.Position.
Как?
Вариант номер раз: ввести флажок, напр. IgnoreTrackChange, и перед изменением TrackBar.Position выставлять его в True; а в TrackBar.OnChange, если флажок взведен (true) - сбрасывать его, и ничего больше не делать.
Вариант номер два: перед изменением TrackBar.Position делать TrackBar.OnChange:=nil;, а после - TrackBar.OnChange:=TrackBarOnChange;
Вариант номер 3, за работоспособность не ручаюсь - проверять в TrackBar.OnChange, насколько сильно отличаются Position, и если чуть-чуть, то ничего не делать.
Locke (2006-03-10 16:34:00) [4]ап хелп
Locke (2006-03-10 00:53:00) [5]падскажите как исправить проблему)
Locke (2006-03-09 11:49:00) [6]да именно так)) подскажите как изменить??
x.pro (2006-03-09 08:06:00) [7]я тоже на такие грабли натыкался когда был молод :) и скорее всего Virgo_Style прав.
Virgo_Style (2006-03-08 22:24:00) [8]*телепатирует*
а в TrackBar2.OnChange у вас, наверное, MediaPlayer1.Position := TrackBar2.Position, да?
Locke (2006-03-08 00:46:00) [9]та же фигня ,кто поможет?