Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.05;
Скачать: CL | DM;

Вниз

Медиаплеер на Delphi   Найти похожие ветки 

 
m-kirill-2003 ©   (2006-10-22 15:22) [0]

Нужна срочно Ваша помощь
Пишу медиа плеер на Delphi, но при запуске глюк.
Проигрывает пару секунду и завершает работу. Привожу текст программы:
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 ComCtrls, ExtCtrls, StdCtrls, MPlayer, ToolWin;
type
 TForm1 = class(TForm)
   Button1: TButton;
   MediaPlayer1: TMediaPlayer;
   Timer1: TTimer;
   OpenDialog1: TOpenDialog;
   TrackBar1: TTrackBar;
   DateTimePicker1: TdateTimePicker;
   Panel1: TPanel;
   procedure Button1Click(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
   procedure TrackBar1Change(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
var
 Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
 opendialog1.Execute;
 mediaplayer1.filename:=opendialog1.filename;
 mediaplayer1.timeformat:=tfmilliseconds;
 mediaplayer1.open;
 timer1.enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 trackbar1.position:=round(mediaplayer1.position*trackbar1.max/mediaplayer1.length);
 datetimepicker1.time:=(mediaplayer1.position/(24*60*60*1000)+0.0000001);
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
 mediaplayer1.position:=round(trackbar1.position*mediaplayer1.length/trackbar1.max);
end;
end.

Прикол в том, что есть как бы полоса прокрутки (элемент trackbar) и что то типа счетчика времени (datetime picker) всё связано с помощью таймера. Ошибка в том, что плеер начинает играть, а когда переходит в процедуру таймера, то воспроизведение останавливается... ПОМОГИТЕ


 
Ketmar ©   (2006-10-22 15:24) [1]

никогда не думал, что при присвоении чего-то свойству position трэкбара у него (трэкбара) вызывается событие OnChange?


 
m-kirill-2003 ©   (2006-10-22 15:27) [2]

Это что бы можнобыло с помощью полосы перемотки перематывать файл


 
Ketmar ©   (2006-10-22 15:32) [3]

читай внимательно [1]. думай.


 
Virgo_Style ©   (2006-10-22 15:36) [4]

m-kirill-2003 ©   (22.10.06 15:27) [2]
Это что бы можнобыло с помощью полосы перемотки перематывать файл


Это ясно, но реализация-то ошибочна


 
m-kirill-2003 ©   (2006-10-22 15:39) [5]

Это сделана для того, что когда меняется значение полосы прокрутки меняется позиция файл, воспроизводимого в плеере... Да если это убрать, то все равно такая же ошибка... Подскажи а? Ты ведь знаешь...


 
Проггер из библиотеки   (2006-10-22 15:43) [6]

Насколько я помню, TrackBar"ом всё равно глючно получается, скачет сильно и т.д. Как насчёт свой компонент написать и там всё культурно сделать?


 
Чародей ©   (2006-10-22 15:45) [7]


> Насколько я помню, TrackBar"ом всё равно глючно получается,
>  скачет сильно и т.д. Как насчёт свой компонент написать
> и там всё культурно сделать?

Не плох орешек


 
m-kirill-2003 ©   (2006-10-22 15:49) [8]


> Это ясно, но реализация-то ошибочна
но почему то работает? Странно да?
Вы мне помогите с тем, что мне надо, чтобы проигрыватель не стопорился.


 
Проггер из библиотеки   (2006-10-22 15:52) [9]

> [7]
Почему орешек, если не секрет?

> [8]
Уже говорили: OnChange вызывается, когда в таймерной процедуре меняешь положение (change"ишь) положение TrackBar"а. Ищи в справке по TrackBar"у другое событие. по-моему, там было такое.


 
m-kirill-2003 ©   (2006-10-22 16:04) [10]

Боже шь ты мой... мне дадут нормальный ответ тут или нет?
Как сделать что бы воспроизведение не прерывалось....


 
Проггер из библиотеки   (2006-10-22 16:09) [11]

[9]
Скопируй, пожалуйста, из справки по Дельфи список событий TrackBar"а (я сейчас не дома). Выберем, будем думать дальше.


 
m-kirill-2003 ©   (2006-10-22 16:13) [12]

причем тут это? Причем тут trackbar? Ошибка, которую мне надо устронить в том, что когда выполняется команда  timer1.enabled:=true; начинается процедура таймера и вопроизведение останавливается...


 
Проггер из библиотеки   (2006-10-22 16:17) [13]

Слишком самоуверенно для начинающего.

Смотрим, что делает прога...

procedure TForm1.Timer1Timer(Sender: TObject);
begin
trackbar1.position:=round(mediaplayer1.position*trackbar1.max/mediaplayer1.length); {Здесь меняется положение TrackBar"а и он автоматически вызывает OnChange, см. туда}
datetimepicker1.time:=(mediaplayer1.position/(24*60*60*1000)+0.0000001);
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
mediaplayer1.position:=round(trackbar1.position*mediaplayer1.length/trackbar1.max); {После перехода сюда из процедуры таймера меняется положение MediaPlayer"а - это и есть причина}
end;


 
m-kirill-2003 ©   (2006-10-22 16:29) [14]

Бля.... Я - идиота кусок, да еще и какой... Точно... Все работает...
Вот список событйи из справки
In TTrackBar

OnChange

Derived from TWinControl

OnEnter
 OnExit
 OnKeyDown
 OnKeyPress
 OnKeyUp

Derived from TControl

OnContextPopup
 OnDragDrop
 OnDragOver
 OnEndDock
 OnEndDrag
 OnStartDock
 OnStartDrag


 
Проггер из библиотеки   (2006-10-22 16:34) [15]

Да, чяестно говоря, ожидал чего-то получше, чем этот список. Там, кстати, ещё OnClick должен быть, если не ошибаюсь. Можно попробовать отловить отпускание левой кнопки мыши. Жду результатов по проверке этих двух вариантов или вопросов по их реализации.


 
@!!ex ©   (2006-10-22 16:39) [16]

Да зафиг другое событие???


var
 ChangePosition:boolean = false;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 ChangePosition:=true;
 
 ...

 ChangePosition:=false;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
 if not ChangePosition then
 begin
 end;
end;


 
Проггер из библиотеки   (2006-10-22 16:40) [17]

> [16]
Не мерцает//скачет?


 
Ketmar ©   (2006-10-22 16:43) [18]

>[16] @!!ex(c) 22-Oct-2006, 16:39
>Да зафиг другое событие???
чтобы удобно было. OnSeek -- оно весьма удобно. %-)


 
@!!ex ©   (2006-10-22 16:43) [19]

Лет 6 назад писал плеер. Использовал флаг. Все отлично работало. не мерцало не скакало. :)



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

Текущий архив: 2006.11.05;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.039 c
2-1161450020
90210
2006-10-21 21:00
2006.11.05
inline


15-1160507911
Kerk
2006-10-10 23:18
2006.11.05
Имперский марш из Star Wars в mp3


15-1161255761
zdm
2006-10-19 15:02
2006.11.05
ToolBar


8-1143789307
Feg16
2006-03-31 11:15
2006.11.05
Вывод потокового звука


3-1157904227
так себе
2006-09-10 20:03
2006.11.05
Подредактируйте запрос