p align="left">end; procedure TMainForm.FormDestroy(Sender: TObject); begin PlayList.Free; end; procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction); begin IncPlayList := False; WaveOut.Close; Приложение А (продолжение) SaveSettings; end; procedure TMainForm.FormShow(Sender: TObject); begin if (ParamStr(1) <> '') then if LoadFile(ParamStr(1)) then begin btnPlayClick(nil); end else MessageDlg(ParamStr(1)+' is not a valid Audiofile',mtError, [mbOK],0); end; procedure TMainForm.WMDropFiles(var Msg: TMessage); var i,cnt: integer; Buf: array[0..255]of Char; begin try cnt := DragQueryFile(Msg.wParam,$FFFFFFFF,@Buf,255); if (cnt > 0) then begin IncPlayList := False; WaveOut.Stop; PlayList.Clear; for i := 0 to cnt-1 do begin DragQueryFile(Msg.wParam,i,@Buf,255); if not AddFile(StrPas(Buf)) then MessageDlg(StrPas(Buf)+' is not a valid Audiofile',mtError, [mbOK],0); end; PlayIndex := 0; SelectFile(0); if (PlayList.Count > 0) then btnPlayClick(nil); end; finally DragFinish(Msg.wParam); end; end; {-- TMainForm -----------------------------------------------------------} procedure TMainForm.DrawTime(Time: Longint); Var Hour, Min, Sec, MSec: Word; begin { Display the "Time" } TimeDecode(Time, Hour, Min, Sec, MSec); if (oSec <> Sec) then begin ss1.Value := Sec; oSec := Sec; end; if (oMin <> Min) then begin mm1.Value := Min; oMin := Min; end; end; {-- TMainForm -----------------------------------------------------------} procedure TMainForm.SetFileParams; begin Приложение А (продолжение) if not MpegFile.Empty then with MpegFile do begin ss1.Enabled := True; ss2.Enabled := True; mm1.Enabled := True; mm2.Enabled := True; digit.Enabled:= True; lblFile.Caption := IntToStr(PlayIndex+1)+':'+UpperCase(ExtractFileName(Filename)); ledRate.Value := PlaybackRate div 1000; ledRate.Enabled := True; lblLayer.Visible := True; lblLayer2.Visible := True; case Layer of 1: lblLayer2.Caption := 'I'; 2: lblLayer2.Caption := 'II'; 3: lblLayer2.Caption := 'III'; end; if (Mode = smJointStereo) or (Mode = smStereo) then ledMode.Mode := mStereo else ledMode.Mode := mMono; ledMode.Enabled := True; ledBitRate.Value := BitRate; ledBitRate.Enabled := True; lblBitRate.Caption := 'KBit/s'; end else if not WaveFile.Wave.Empty then with WaveFile.Wave do begin ss1.Enabled := True; ss2.Enabled := True; mm1.Enabled := True; mm2.Enabled := True; digit.Enabled:= True; lblFile.Caption := IntToStr(PlayIndex+1)+':'+UpperCase(ExtractFileName(Filename)); ledRate.Value := SampleRate div 1000; ledRate.Enabled := True; lblLayer.Visible := False; lblLayer2.Visible := False; ledMode.Mode := Mode; ledMode.Enabled := True; ledBitRate.Value := BitLength; ledBitRate.Enabled := True; lblBitRate.Caption := 'Bit'; end else begin ss1.Enabled := False; ss2.Enabled := False; mm1.Enabled := False; mm2.Enabled := False; digit.Enabled:= False; lblFile.Caption := 'Нет Файла'; ledRate.Enabled := False; lblLayer.Visible := False; lblLayer2.Visible := False; ledMode.Enabled := False; ledBitRate.Enabled:= False; end; Приложение А (продолжение) end; {-- TMainForm -----------------------------------------------------------} procedure TMainForm.HiTimerTimer(Sender: TObject); var Time: Longint; begin MMConnector1.Trigger; inc(TimeCnt); if (TimeCnt mod 5 = 0) and (wosPlay in Waveout.State) and not Seeking then begin Time := WaveOut.Position; inc(CurTime,Time-OldTime); DrawTime(CurTime); OldTime := Time; if not MpegFile.Empty then begin Gauge.Value := MulDiv(MpegFile.Position, 100, MpegFile.Frames); ImageEOF.Visible := MpegFile.Position >= MpegFile.Frames; end else begin Gauge.Value := MulDiv(WaveFile.Wave.Position, 100, WaveFile.Wave.DataSize); ImageEOF.Visible := WaveFile.Wave.Position >= WaveFile.Wave.DataSize; end; end; end; {-- TMainForm -----------------------------------------------------------} procedure TMainForm.WaveOutStart(Sender: TObject); begin TimeCnt := 0; HiTimer.Enabled := True; LoadImage(ImageState,'BM_PLAY'); ImageState.Visible := True; end; {-- TMainForm -----------------------------------------------------------} procedure TMainForm.WaveOutStop(Sender: TObject); begin HiTimer.Enabled := False; WaveOut.Close; Seeking := False; DrawTime(0); Gauge.Value := 0; ImageEOF.Visible := False; ImageState.Visible := False; if IncPlayList then begin if (PlayIndex < PlayList.Count-1) then begin inc(PlayIndex); SelectFile(PlayIndex); WaveOut.Start; end else begin PlayIndex := 0; SelectFile(PlayIndex); end; end; end; {-- TMainForm -----------------------------------------------------------} procedure TMainForm.WaveOutPause(Sender: TObject); Приложение А (продолжение) begin LoadImage(ImageState,'BM_PAUSE'); end; {-- TMainForm -----------------------------------------------------------} procedure TMainForm.WaveOutRestart(Sender: TObject); begin LoadImage(ImageState,'BM_PLAY'); end; {-- TMainForm -----------------------------------------------------------} function TMainForm.LoadFile(FileName: TFileName): Boolean; begin Result := False; if (FileName <> '') and FileExists(FileName) then begin PlayIndex := 0; PlayList.Clear; MpegFile.FileName := ''; WaveFile.Wave.FileName := ''; if IsMpegFile(FileName) or wioIsWaveFile(FileName, RIFF_FILE) then begin PlayListName := 'noname.m3u'; PlayList.Add(FileName); end else begin PlayListName := FileName; LoadPlayList(FileName,PlayList); end; Result := (PlayList.Count > 0); SelectFile(0); end; caption := filename; end; {-- TMainForm -----------------------------------------------------------} function TMainForm.AddFile(FileName: TFileName): Boolean; begin Result := False; if (FileName <> '') and FileExists(FileName) then begin if IsMpegFile(FileName) or wioIsWaveFile(FileName, RIFF_FILE) then begin PlayList.Add(FileName); Result := True; end else begin Result := LoadPlayList(FileName,PlayList); end; end; end; {-- TMainForm -----------------------------------------------------------} procedure TMainForm.SelectFile(index: integer); var FileName: TFileName; begin MpegFile.FileName := ''; WaveFile.Wave.FileName := ''; if (index >= 0) and (index < PlayList.Count) then begin FileName := PlayList[index]; Приложение А (продолжение) if (FileName <> '') and FileExists(FileName) then begin if IsMpegFile(FileName) then begin MpegFile.FileName := FileName; WaveOut.Input := MpegFile; end else if wioIsWaveFile(FileName, RIFF_FILE) then begin WaveFile.Wave.FileName := FileName; WaveOut.Input := WaveFile; end end; CurTime := 0; OldTime := 0; end; SetFileParams; end; {-- TMainForm -----------------------------------------------------------} procedure TMainForm.PopupMenuPopup(Sender: TObject); begin { adjust menu entrys } PopupMenu.Items[6].Enabled := PlayList.Count > 1; PopupMenu.Items[7].Enabled := PlayList.Count > 1; if (wosPlay in WaveOut.State) then begin PopupMenu.Items[0].Enabled := False; PopupMenu.Items[2].Caption := '&Рестарт'; PopupMenu.Items[3].Enabled := True; PopupMenu.Items[4].Enabled := True; end else begin PopupMenu.Items[0].Enabled := True; PopupMenu.Items[2].Caption := '&Воспроизвести'; PopupMenu.Items[3].Enabled := False; PopupMenu.Items[4].Enabled := False; end; if (wosPause in WaveOut.State) then PopupMenu.Items[3].Caption := '&Пауза' else PopupMenu.Items[3].Caption := '&Пауза'; end; {-- TMainForm -----------------------------------------------------------} procedure TMainForm.PreferencesClick(Sender: TObject); begin with TPreferencesForm.Create(Self) do try ShowModal; finally Free; end; end; {-- TMainForm -----------------------------------------------------------} procedure TMainForm.btnOpenClick(Sender: TObject); var Idx: WORD; begin if (OpenDialog.Execute) and (opendialog.FileName = '*.avi') then begin Video.Show; Video.Visible:=true; mainform.Visible:=false; if video.AVIOpenDialog.Execute then
Страницы: 1, 2, 3, 4, 5, 6, 7, 8
|