Тема: перемотка
Показать сообщение отдельно
  #9  
Старый 17.11.2010, 21:16
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

если все же перемещать image:
Код:
var pressed:boolean;
tx:integer;
...
procedure TForm1.Panel2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Pressed:=true;
  MediaPlayer1.Pause;
  tx:=X;
end;

procedure TForm1.Panel2MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if Pressed then
    begin
      Panel2.Left:=Panel2.Left+x-tx;
      MediaPlayer1.Position:=Round(MediaPlayer1.Length*(Panel2.Left/Panel1.Width));
      tx:=x;
    end;
end;

procedure TForm1.Panel2MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Pressed:=false;
  MediaPlayer1.Play;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var r:single;
begin
  if MediaPlayer1.Length>0 then
    r:=MediaPlayer1.Position/MediaPlayer1.Length
  else
    r:=0;

  Panel2.Left:=Round({Image1.Left +} r*Panel1.Width); //раскомментить для TImage'й
end;
Но этот способ тормозной, особенно с медиаплеером (который ваще лучше не юзать). Лучше вручную рисовать на трекбаре, навроде этого (это без изображений, но на них заменить нетрудно):
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var r:single;
begin
...
      with PaintBox3.Canvas do
        begin
          Pen.Style:=psSolid;
          Brush.Color:=clBtnFace;
          Rectangle(0, 0, PaintBox3.Width, PaintBox3.Height); //контур
          Pen.Style:=psClear;
          if BP.GetLength>0 then
            r:=BP.GetPos/BP.GetLength
          else
            r:=0;
          Brush.Color:=clRed;
          Rectangle(1, 1, Round(PaintBox3.Width*r), PaintBox3.Height); //заливка
        end;
...
end;
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت
Ответить с цитированием