Текущий архив: 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.46 MB
Время: 0.003 c