Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];

Вниз

TTrackBar   Найти похожие ветки 

 
anod   (2002-07-28 16:32) [0]

Здраствуйте, у меня такой вопрос:
На форме лежит TTrackBar, проигрывается музыка. Как мне реализвать прокрутку песни? Событие onChange не подходит, так как в OnTimer ему присваевывается нужная позиция, вызывая тем самым это событие. Подкинте идейку.


 
TTCustomDelphiMaster   (2002-07-28 16:58) [1]

Введите переменную - флаг.
При изменении позиции в OnTimer включайте флаг.
В обработчике onChange проверяйте если флаг включен значит изменение произошло от таймера, если нет - то по другим причинам. После этого флаг следует сбросить.


 
Юрий Зотов   (2002-07-28 17:05) [2]

Именно событие OnChange как раз для этого и подходит. А чтобы не было рекурсии, сделайте так:

procedure Timer1OnTimer(Sender: TObject);
begin
TrackBar1.OnChange := nil;
try
TrackBar1.Position := MediaPlayer1.Position
finally
TrackBar1.OnChange := TrackBar1Change
end
end;

procedure TrackBar1Change(Sender: TObject);
begin
MediaPlayer1.Position := TrackBar1.Position
end;


 
anod   (2002-07-28 17:36) [3]

Спасибо, попробую.


 
anod   (2002-07-28 17:45) [4]

2Юрий Зотов
Ваш пример не заработал:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
pos:=BASS_ChannelGetPosition(stream);
Gauge.OnChange := nil;
try
Gauge.Position:=Trunc(BASS_ChannelBytes2Seconds(stream,pos));
finally
Gauge.OnChange := gaugeChange;
end;
end;

procedure TForm1.gaugeChange(Sender: TObject);
begin
BASS_ChannelSetPosition(stream, Gauge.Position);
end;


2TTCustomDelphiMaster
А когда влаг должен выключатся???


 
Юрий Зотов   (2002-07-28 17:57) [5]

Этот пример может не работать только в том случае, если не работает ВАШ код или не назначены обработчики событий. Других вариантов нет.

И если он не работает, то не заработает и способ с флагом.


 
TTCustomDelphiMaster   (2002-07-28 18:10) [6]

Юрий Зотов © (28.07.02 17:05)
Не должно работать, т.к. событие будет обрабатываться после выхода из onTimer.


> anod © (28.07.02 17:45)
> 2Юрий Зотов
> Ваш пример не заработал:


Попробуй так
procedure TForm1.Timer1Timer(Sender: TObject);
begin
pos:=BASS_ChannelGetPosition(stream);
Gauge.OnChange := nil;
try
Gauge.Position:=Trunc(BASS_ChannelBytes2Seconds(stream,pos));
finally
Application.ProcessMessages;
Gauge.OnChange := gaugeChange;
end;
end;
может что нибудь получиться.


> 2TTCustomDelphiMaster
> А когда влаг должен выключатся???


В последней строчке procedure TForm1.gaugeChange(Sender: TObject);


 
anod   (2002-07-28 18:22) [7]

Извините, и то и тот способ работает - все дело в коде

Gauge.Position:=Trunc( BASS_ChannelBytes2Seconds(stream,pos));

BASS_ChannelSetPosition(stream, Gauge.Position);


 
TTCustomDelphiMaster   (2002-07-28 18:56) [8]


> TTCustomDelphiMaster © (28.07.02 18:10)
> Юрий Зотов © (28.07.02 17:05)
> Не должно работать, т.к. событие будет обрабатываться после
> выхода из onTimer.


Да... что-то я не то ляпнул. Прошу написанное считать "бредом сивой кобылы".


 
Юрий Зотов   (2002-07-28 19:10) [9]

Ну, слава Богу, все разобрались. Всегда бы так...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.023 c
4-24262
Berkut
2002-05-31 21:50
2002.08.08
Кнопка Пуск


3-23907
sniknik
2002-07-17 12:19
2002.08.08
Метод на обсуждение, рефреш датасета измененного копией программы


1-24090
c0pYc@t
2002-07-26 11:49
2002.08.08
Thread


6-24138
inf
2002-05-25 17:12
2002.08.08
net send через дельфи


1-23995
ed_209
2002-07-28 02:16
2002.08.08
2 FileStreams on 1 file...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский