|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
MediaPlayer1.Position
как нам выполнять действия переодически
тоесть ежесекундно выполнять MediaPlayer1.Position:=TrackBar2.Position; |
#2
|
|||
|
|||
Привязать к таймеру (TTimer)
Интервал поставить на 1000 В процедуре на событие таймера прописать Код:
MediaPlayer1.Position:=TrackBar2.Position; А так же когда плеер не активен таймер можно отключать. |
#3
|
||||
|
||||
MediaPlayer1.Position
совместно с таймером работает
Код:
TrackBar2.Position:=MediaPlayer1.Position; Код:
procedure TfrmMyBrowser.TrackBar2Change(Sender: TObject); var a: integer; begin Timer2.Enabled := False; MediaPlayer1.Pause; MediaPlayer1.Position:=TrackBar2.Position; a := MediaPlayer1.Position; sec := a div 1000 mod 60; min := a div 60000; Timer2.Enabled := True; MediaPlayer1.Play; end; и выходит тупое заедание можно ли както сделать чтобы сробатывало TrackBar2Change только на действия мышки а не программного перемещения. |
#4
|
||||
|
||||
например так
Код:
var poschange:boolean; ... procedure TfrmMyBrowser.TrackBar2MouseDown(Sender: TObject;X,Y:integer;Button:TMouseButton); begin poschange:=true; end; procedure TfrmMyBrowser.TrackBar2MouseUp(Sender: TObject;X,Y:integer;Button:TMouseButton); begin poschange:=false; end; procedure TfrmMyBrowser.TrackBar2Change(Sender: TObject); var a: integer; begin if poschange then begin Timer2.Enabled := False; MediaPlayer1.Pause; MediaPlayer1.Position:=TrackBar2.Position; a := MediaPlayer1.Position; sec := a div 1000 mod 60; min := a div 60000; Timer2.Enabled := True; MediaPlayer1.Play; end; end; РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت |
#5
|
||||
|
||||
все бы ничего но но в трек баре TrackBar2MouseDown такого нет
|
#6
|
||||
|
||||
TrackBar2MouseDown там и не должно быть... Используйте TrackBar2Change...
Помогаю за Спасибо |
#7
|
||||
|
||||
и так используем прочитай выше
|
#8
|
||||
|
||||
Цитата:
Тупо убери poschange и все будет работать... Код:
procedure TfrmMyBrowser.TrackBar2Change(Sender: TObject); var a: integer; begin //if poschange then //begin Timer2.Enabled := False; MediaPlayer1.Pause; MediaPlayer1.Position:=TrackBar2.Position; a := MediaPlayer1.Position; sec := a div 1000 mod 60; min := a div 60000; Timer2.Enabled := True; MediaPlayer1.Play; end; //end; ЗЫ вот не давно добавили исходник плеера на бассе: http://delphisources.ru/pages/source...my-player.html Скачай, посмотри, может будет бас использовать, вместо медиа плеера. Во первых сразу багов меньше будет, а во вторых там уже реализовано все, что тебе надо, даже намного больше... Помогаю за Спасибо Последний раз редактировалось v1s2222, 12.10.2010 в 17:20. |
#9
|
||||
|
||||
Цитата:
Цитата:
можно заменить трекбар на пэйнтбокс: Код:
procedure TForm1.Timer1Timer(Sender: TObject); var r:single; begin if MediaPlayer1.Enabled then begin with PaintBox3.Canvas do begin Pen.Style:=psSolid; Brush.Color:=clBtnFace; Rectangle(0, 0, PaintBox3.Width, PaintBox3.Height); Pen.Style:=psClear; r:=MediaPlayer1.Length if r>0 then r:=MediaPlayer1.Position/r; Brush.Color:=clRed; Rectangle(1, 1, Round(PaintBox3.Width*r), PaintBox3.Height); end; end; end; procedure TForm1.PaintBox3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button=mbLeft then begin poschanging:=true; MediaPlayer1.Position := Round(X*MediaPlayer1.Length/PaintBox3.Width); end; end; procedure TForm1.PaintBox3MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if poschanging then MediaPlayer1.Position := Round(X*MediaPlayer1.Length/PaintBox3.Width); end; procedure TForm1.PaintBox3MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin poschanging:=false; end; РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت |
#10
|
||||
|
||||
вот тут я когда-то переделывал TrackBar для плеера
добавил событие OnUserChange, которое вызывается только если положение слайдера вручную меняется юзером Код:
unit MediaTrackBar; interface uses SysUtils, Classes, Controls, ComCtrls; type TMediaTrackBar = class(TTrackBar) private FMouseDown: Boolean; FOnUserChange: TNotifyEvent; protected procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; procedure Changed;override; public constructor Create(AOwner: TComponent);override; published property OnUserChange: TNotifyEvent read FOnUserChange write FOnUserChange; end; procedure Register; implementation procedure Register; begin RegisterComponents('Samples', [TMediaTrackBar]); end; { TMediaTrackBar } procedure TMediaTrackBar.Changed; begin if FMouseDown then begin if Assigned(FOnUserChange) then FOnUserChange(Self); end; inherited Changed; end; constructor TMediaTrackBar.Create(AOwner: TComponent); begin inherited Create(AOwner); FMouseDown:=False; end; procedure TMediaTrackBar.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FMouseDown:=True; inherited MouseDown(Button,Shift,X,Y); end; procedure TMediaTrackBar.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FMouseDown:=False; inherited MouseUp(Button,Shift,X,Y); end; end. Последний раз редактировалось ryderx34, 13.10.2010 в 20:06. |