Консультация № 85007
01.05.2007, 20:08
0.00 руб.
0 2 2
Здраствуйте ув Эксперты
как привязать компонент TTrackBar,привязаный к TMediaPlayer в качестве перемотки,так чтобы при воспроизведении медиа файла ползунок на TTrackBar двигался в соответствии с позицией воспроизводимого файла?

Обсуждение

Неизвестный
01.05.2007, 20:39
общий
это ответ
Здравствуйте, VaNuk!
Вот код, надеюсь поможет!
Только он на примере ScrollBar‘а!

Приложение:
СкролБарprocedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer);beginif ScrollCode=scTrack then beginMediaPlayer1.Position:=ScrollBar1.Position;if not MediaPlayer1.AutoOpen then MediaPlayer1.Open;Timer4.Enabled:=false;MediaPlayer1.Stop;end;if ScrollCode=scPosition then beginMediaPlayer1.Position:=ScrollBar1.Position;MediaPlayer1.Play;Timer4.Enabled:=true;end;end;Таймер 4 procedure TForm1.Timer4Timer(Sender: TObject);beginScrollBar1.Position:=MediaPlayer1.Position;end;
Неизвестный
01.05.2007, 21:05
общий
это ответ

<i>Здравствуйте, <b>VaNuk</b>!</i>

Смотрите примерный код в приложении. Комментарии в нем же.
Для отслеживания используется Таймер.
Кнопка Button1 - кнопка "Открыть...".
Panel1 - используется как элемент отображения (MediaPlayer1.Display)

<i>Удачи!</i>

Приложение:
unit Unit14;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ExtCtrls, MPlayer, StdCtrls;type TForm1 = class(TForm) MediaPlayer1: TMediaPlayer; TrackBar1: TTrackBar; Timer1: TTimer; OpenDialog1: TOpenDialog; Button1: TButton; Panel1: TPanel; procedure FormCreate(Sender: TObject); procedure TrackBar1Change(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } // Специальный флаг - позволяет работать с // TrackBar‘ом не только пользователю, но // и таймеру fChanging: Boolean; public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}// Создание формы// Form1.OnCreateprocedure TForm1.FormCreate(Sender: TObject);begin // Устанавливаем флаг изменения TrackBar1 fChanging:= True;end;// Изменение значения TrackBar‘a// TrackBar1.OnChangeprocedure TForm1.TrackBar1Change(Sender: TObject);begin with MediaPlayer1 do // Если меняет не таймер, то if not fChanging then begin Pause; // Меняем позицию Position:= TrackBar1.Position; Play; end; // Сбрасываем флаг изменения fChanging:= False;end;// Timer1.OnTimerprocedure TForm1.Timer1Timer(Sender: TObject);begin // Устанавливаем флаг изменения // Данный флаг говорит о том, что изменение производится // не пользователем, а таймером fChanging:= True; // Устанавливаем позицию TrackBar1 TrackBar1.Position:= MediaPlayer1.Position;end;// Нажатие на кнопку "Открыть"// Button1.OnClickprocedure TForm1.Button1Click(Sender: TObject);begin // Диалог открытия файлов if not OpenDialog1.Execute then Exit; with MediaPlayer1 do begin // Открываем файл FileName:= OpenDialog1.FileName; Open; // Запускаем файл Play; // Устанавливаем длину TrackBar1, равную длине // фильма fChanging:= True; TrackBar1.Max:= Length; end;end;end.
Форма ответа