| Цитата |
| Код | procedure TForm1.Button1Click(Sender: TObject); begin with MediaPlayer1 do begin FileName := 'c:\cool.mp3'; Open; Play; TrackBar1.Max := TrackLength[0]; end; end;
procedure TForm1.Timer1Timer(Sender: TObject); var e: TNotifyEvent; begin with TrackBar1 do begin e := OnChange; OnChange := nil; Position := MediaPlayer1.Position; OnChange := e; end; end;
procedure TForm1.TrackBar1Change(Sender: TObject); begin MediaPlayer1.Position := TrackBar1.Position; MediaPlayer1.Play; end;
|
|
это у меня есть и трекбар двигаеться, и если его мышкой перемишять оно перематывает а вот чтоб он сразу начал играть с определёной точки нет. Может у меня где тов других процедурах ошибки? Вот весь код програмы:
| Код | procedure TForm1.FormCreate(Sender: TObject); var i:Integer; begin
p:=true; igrait:=false; end;
procedure TForm1.SB_OPENClick(Sender: TObject); var i: integer; nam,s,p: string; f:textfile; begin OpenDialog.Title := 'Выбор клипа'; if OpenDialog.Execute then if OpenDialog.DefaultExt = 'bpl' then begin ListBox.Clear; ListBox1.Clear; AssignFile(f,OpenDialog.FileName); Reset(f); While not Eof(f) do begin Readln(f,s); Listbox.Items.Add(s); Delete(s,1,LastDelimiter('\',s)); ListBox1.Items.Add(s); end; end else begin for i:=0 to OpenDialog.Files.Count-1 do begin ListBox.Items.Add(OpenDialog.Files.Strings[i]); nam:=ExtractFileName(OpenDialog.Files.Strings[i]); ListBox1.Items.Add(nam); end; end; If OpenDialog.FilterIndex=2 then begin
s:=''; p:=''; ListBox.Clear; ListBox1.Clear; AssignFile(f,OpenDialog.FileName); Reset(f); Readln(f,s); Read(f,p); Listbox.Items.Add(s); ListBox.ItemIndex:=0; Delete(s,1,LastDelimiter('\',s)); ListBox1.Items.Add(s); ListBox1.ItemIndex:=ListBox.ItemIndex;
SB_playClick(Sender); TrackBar1.Position:=StrToInt(p);
end; ListBox.ItemIndex:=0; ListBox1.ItemIndex:=ListBox.ItemIndex; end;
procedure TForm1.SB_playClick(Sender: TObject); begin
MediaPlayer.Close; If ListBox.ItemIndex < 0 then begin ShowMessage('Выбирите трек'); MediaPlayer.Close; end else begin MediaPlayer.FileName:=ListBox.Items.Strings[ListBox.ItemIndex]; MediaPlayer.Open; MediaPlayer.TimeFormat := tfMilliseconds; MediaPlayer.Display := Form2; MediaPlayer.DisplayRect := Form2.ClientRect; Timer1.Enabled:=True; TrackBar1.Max := MediaPlayer.TrackLength[0]; Form2.TB_length_Ekran.Max := MediaPlayer.TrackLength[0]; MediaPlayer.Play; end;
end;
procedure TForm1.SB_StopClick(Sender: TObject); begin MediaPlayer.Stop; MediaPlayer.Close; Timer1.Enabled:=False; end;
procedure TForm1.SB_VolumClick(Sender: TObject); begin if TB_Volume.Visible=False then TB_Volume.Visible := True else TB_Volume.Visible := False; end;
procedure TForm1.TB_VolumeChange(Sender: TObject); var volume:LongWord; begin
volume := 6500* (TB_Volume.Max - TB_Volume.Position); volume := volume + (volume shl 16); waveOutSetVolume(MIDI_MAPPER,volume); end; procedure TForm1.SB_NOVOLUMeClick(Sender: TObject);
begin
if p then begin waveOutSetVolume(MIDI_MAPPER,0); p:=false; end else begin TB_VolumeChange(SEnder); p:=true end; end;
procedure TForm1.MediaPlayerNotify(Sender: TObject); begin
if ListBox1.ItemIndex < ListBox1.Count-1 then if MediaPlayer.Position=MediaPlayer.Length then begin ListBox.ItemIndex:=ListBox.ItemIndex+1; ListBox1.ItemIndex:=ListBox.ItemIndex; SB_PlayClick(sender) end
end;
procedure TForm1.Timer1Timer(Sender: TObject); var e,r : tnotifyevent; m,s :integer; begin e:=TrackBar1.OnChange; trackBar1.OnChange:=nil; TrackBar1.position:=MediaPlayer.position; trackBar1.OnChange:=e; Form2.TB_length_Ekran.Position:=TrackBar1.position;
L_time.Caption :=FormatTime(MediaPlayer.Position) + ' / '+ FormatTime(MediaPlayer.Length); Form2.L_Ekran_Time.Caption:= L_time.Caption;
if (mediaplayer.position = mediaplayer.Length)and(ListBox.Items.Count-1=ListBox.ItemIndex) then begin MediaPlayer.Stop; Form2.Color:=clActiveCaption; end;
end;
procedure TForm1.SB_PauseClick(Sender: TObject); begin MediaPlayer.Pause; end;
procedure TForm1.SB_BackClick(Sender: TObject); begin if ListBox.ItemIndex > 0 then begin ListBox.ItemIndex := ListBox.ItemIndex - 1; SB_playClick(Sender); end; ListBox1.ItemIndex:=ListBox.ItemIndex; end;
procedure TForm1.ListBox1Click(Sender: TObject); begin ListBox.ItemIndex := ListBox1.ItemIndex; end;
procedure TForm1.TrackBar1Change(Sender: TObject); begin MediaPlayer.position:=TrackBar1.position; Form2.TB_length_Ekran.Position:=TrackBar1.Position; MediaPlayer.Play; end;
procedure TForm1.SB_NextClick(Sender: TObject); begin if ListBox1.ItemIndex < ListBox1.Count then begin ListBox.ItemIndex := ListBox.ItemIndex + 1; SB_playClick(Sender); end; ListBox1.ItemIndex:=ListBox.ItemIndex; end;
procedure TForm1.ListBox1DblClick(Sender: TObject); begin SB_playClick(Sender); end;
procedure TForm1.N1Click(Sender: TObject); begin SB_playClick(Sender); end;
procedure TForm1.N2Click(Sender: TObject); begin SB_PauseClick(Sender); end;
procedure TForm1.N3Click(Sender: TObject); begin SB_StopClick(Sender); end;
procedure TForm1.N5Click(Sender: TObject); begin SB_NextClick(Sender); end;
procedure TForm1.N6Click(Sender: TObject); begin SB_BackClick(Sender); end;
procedure TForm1.N8Click(Sender: TObject); begin
Form3.Visible:=True;
end;
procedure TForm1.N10Click(Sender: TObject); var poz:integer; begin SB_StopClick(Sender); form3.Close; ListBox.ItemIndex:=ListBox1.ItemIndex; ListBox1.DeleteSelected; ListBox.DeleteSelected; ListBox.ItemIndex:=poz; ListBox.ItemIndex:=ListBox1.ItemIndex; end;
function TForm1.FormatTime(Time: Integer): string; const sec = 1000; min = 60 * sec; hour = 60 * min; var h, m, s : Integer; begin h := Time div hour; m := (Time div min) mod 60; s := (Time div sec) mod 60; if Time < hour then Result := Format('%d:%.2d', [m, s]) else Result := Format('%d:%.2d:%.2d', [h, m, s]); end;
procedure TForm1.SB_Save_AsClick(Sender: TObject); var i:integer; f:textfile; begin SD.DefaultExt:='bpl'; if Sd.Execute then begin AssignFile(F, SD.FileName); Rewrite(f); For i:=0 to ListBox.Count-1 do begin writeln(f,Listbox.Items.Strings[i]); end; CloseFile(f); end; end;
procedure TForm1.SB_SaveV_asClick(Sender: TObject); var i:integer; f:textfile; begin SD.DefaultExt:='bvb'; if sd.Execute then begin AssignFile(f,SD.FileName); Rewrite(f); writeln(f,Listbox.Items.Strings[Listbox.ItemIndex]); Writeln(f,TrackBar1.Position); CloseFile(f); end; end;
|
|