Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.10.2010, 13:26
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию MediaPlayer1.Position

как нам выполнять действия переодически
тоесть ежесекундно выполнять
MediaPlayer1.Position:=TrackBar2.Position;
Ответить с цитированием
  #2  
Старый 12.10.2010, 14:32
UltraBloxX UltraBloxX вне форума
Новичок
 
Регистрация: 13.05.2009
Сообщения: 66
Репутация: 10
По умолчанию

Привязать к таймеру (TTimer)

Интервал поставить на 1000
В процедуре на событие таймера прописать

Код:
MediaPlayer1.Position:=TrackBar2.Position;

А так же когда плеер не активен таймер можно отключать.
Ответить с цитированием
  #3  
Старый 12.10.2010, 15:15
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию 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  
Старый 12.10.2010, 15:48
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

например так
Код:
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  
Старый 12.10.2010, 16:18
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

все бы ничего но но в трек баре TrackBar2MouseDown такого нет
Ответить с цитированием
  #6  
Старый 12.10.2010, 16:51
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

TrackBar2MouseDown там и не должно быть... Используйте TrackBar2Change...
__________________
Помогаю за Спасибо
Ответить с цитированием
  #7  
Старый 12.10.2010, 17:04
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

и так используем прочитай выше
Ответить с цитированием
  #8  
Старый 12.10.2010, 17:18
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Цитата:
Сообщение от ALexandr555
и так используем прочитай выше
Ну а в чом тогда собственно проблема? По выше описаному коду:
Тупо убери 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  
Старый 12.10.2010, 17:33
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

Цитата:
все бы ничего но но в трек баре TrackBar2MouseDown такого нет
извиняюсь, на память писал.
Цитата:
Тупо убери poschange и все будет работать
у него так и было

можно заменить трекбар на пэйнтбокс:
Код:
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  
Старый 13.10.2010, 20:03
Аватар для ryderx34
ryderx34 ryderx34 вне форума
Активный
 
Регистрация: 22.01.2010
Сообщения: 211
Версия Delphi: 7, 2010
Репутация: 1349
По умолчанию

вот тут я когда-то переделывал 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.
P.S готовый компонент для Delphi 7

Последний раз редактировалось ryderx34, 13.10.2010 в 20:06.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:21.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter