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

Вниз

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

 
Nizam   (2008-05-07 22:20) [0]

Доброго времени суток форумчане!!Пишу плеер на fmod нужно сделать навигацию по файлу как в winamp чтоб щелкаешь по линии и менялась позиция,используя trackbar,проблема в различении изменения позиции таймером(отображение позиции ежесекундно) и пользователем(перемотка). Есть у кого соображения по этому поводу???


 
Renegat   (2008-05-07 22:57) [1]

Соображений, простите, дофига и далее :) Только вот проблема изложена неясно. Поясняйте, в чём конкретно состоит трудность.


 
Nizam   (2008-05-07 23:03) [2]

проблема в том что каждую секунду timer изменяет положение trackbar на текущую позицию в файле и если в то же время пользователь попытается сменить позицию то вылазит ошибка,нужно реализовать различение действий timer и пользователя


 
Nizam   (2008-05-07 23:09) [3]

может можно перехватить нажатие на ползунок трекбара


 
{RASkov} ©   (2008-05-08 11:44) [4]

> [3] Nizam   (07.05.08 23:09)

TrackBar - в таком виде какой он есть в Д7 - не пойдет.
Как вариант можно "отнаследоваться" от TrackBar и "поднять" обработку мыши(MouseDown/Up) от TControl"а...
Затем в MouseDown "отключить" обработчик изменения положения ползунка по таймеру, а на MouseUp вернуть все назад...
Вот нечто так:
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ExtCtrls;

type
 TMyTrBar = class(TTrackBar)
 public
   property OnMouseDown;
   property OnMouseUp;
 end;

 TForm1 = class(TForm)
   Timer1: TTimer;
   procedure FormCreate(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
 private
   Tr: TMyTrBar;
   procedure TrBarChange(Sender: TObject);
   procedure TrMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
   procedure TrMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
   { Private declarations }
 public
   { Public declarations }
 end;

var Form1: TForm1;

implementation
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 Width:=450;
 Height:=100;
 Tr:=TMyTrBar.Create(Self);
 with Tr do begin
  Left:=10; Top:=10;
  Width:=self.ClientWidth-20;
  Max:=100;
  Parent:=Self;
  OnChange:=TrBarChange;
  OnMouseDown:=TrMouseDown;
  OnMouseUp:=TrMouseUp;
 end;
end;

procedure TForm1.TrMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 Timer1.OnTimer:=nil;
end;

procedure TForm1.TrMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 Timer1.OnTimer:=Timer1Timer;
end;

procedure TForm1.TrBarChange(Sender: TObject);
begin
 Tag:=Tr.Position; //Tag - текущее "положение" в песни....
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Tag:=Tag mod 100 + 1; //Tag - текущее "положение" в песни....
 Tr.Position:=Tag;
 Caption:=IntToStr(Tag);
end;

end.



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

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

Наверх




Память: 0.48 MB
Время: 0.008 c
2-1289755463
Gu
2010-11-14 20:24
2011.02.06
Окно ожидания в отдельном потоке


2-1290085181
asdqwe
2010-11-18 15:59
2011.02.06
компонененты OverbyteIcs THttpCli


15-1288211336
Юрий
2010-10-28 00:28
2011.02.06
С днем рождения ! 28 октября 2010 четверг


15-1287588436
Джо
2010-10-20 19:27
2011.02.06
Сайты с поиском работы (программист)


6-1233563581
vegarulez
2009-02-02 11:33
2011.02.06
Вопрос про разбор параметров запроса.