⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmwplay.pas

📁 一套及时通讯的原码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{-- TMMWavePlayer -------------------------------------------------------------}
function TMMWavePlayer.GetFileName: TFileName;
begin
   Result := FWaveFile.Wave.FileName;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.SetBufferSize(aValue: Longint);
begin
   FWaveOut.BufferSize := aValue;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
function TMMWavePlayer.GetBufferSize: Longint;
begin
   Result := FWaveOut.BufferSize;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.SetNumBuffers(aValue: integer);
begin
   FWaveOut.NumBuffers := aValue;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
function TMMWavePlayer.GetNumBuffers: integer;
begin
   Result := FWaveOut.NumBuffers;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.SetDeviceID(aValue: TMMDeviceID);
begin
   FWaveOut.DeviceID := aValue;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
function TMMWavePlayer.GetDeviceID: TMMDeviceID;
begin
   Result := FWaveOut.DeviceID;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.SetProductName(aValue: string);
begin
   FWaveOut.ProductName := aValue;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
function TMMWavePlayer.GetProductName: string;
begin
   Result := FWaveOut.ProductName;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.SetTimeFormat(aValue: TMMTimeFormats);
begin
   FWaveOut.TimeFormat  := aValue;
   FWaveFile.Wave.TimeFormat := aValue;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
function TMMWavePlayer.GetTimeFormat: TMMTimeFormats;
begin
   Result := FWaveOut.TimeFormat;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.SetCallBackMode(aValue: TMMCBMode);
begin
   FWaveOut.CallBackMode := aValue;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
function TMMWavePlayer.GetCallBackMode: TMMCBMode;
begin
   Result := FWaveOut.CallBackMode;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.SetLooping(aValue: Boolean);
begin
   FWaveOut.Looping := aValue;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
function TMMWavePlayer.GetLooping: Boolean;
begin
   Result := FWaveOut.Looping;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.SetLoopCount(aValue: Word);
begin
   FWaveOut.LoopCount := aValue;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
function TMMWavePlayer.GetLoopCount: Word;
begin
   Result := FWaveOut.LoopCount;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
function TMMWavePlayer.GetState: TMMWaveOutState;
begin
   Result := FWaveOut.State;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.SetAutoConvert(aValue: Boolean);
begin
   if (aValue <> FAutoConvert) then
   begin
      if (wosOpen in FwaveOut.State) then
          raise Exception.Create(LoadResStr(IDS_PROPERTYOPEN));

      FAutoConvert          := aValue;
      FPCMConvert.Enabled   := aValue;
      FADPCMConvert.Enabled := aValue;
   end;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.SetPosition(aValue: Longint);
var
   wasPaused: Boolean;
begin
   if (wosOpen in State) then
   begin
      FSeeking := True;
      wasPaused := (wosPause in State);
      FWaveOut.Pause;
      FWaveFile.Wave.Position := aValue;
      FStartPos := aValue;
      FWaveOut.Reset;
      if not wasPaused then FWaveOut.Restart;
      FSeeking := False;
   end
   else
   begin
      FWaveFile.Wave.Position := aValue;
   end;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
function TMMWavePlayer.GetPosition: Longint;
begin
   if (wosPlay in State) then
   begin
      Result := FStartPos+FWaveOut.Position;
   end
   else
   begin
     Result := FWaveFile.Wave.Position;
   end;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.DoChange(Sender: TObject);
begin
   Stop;

   if assigned(FOnChange) then FOnChange(Self);
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.DoChanged(Sender: TObject);
begin
   FADPCMConvert.Enabled := FAutoConvert and FADPCMConvert.CanConvert;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.DoStart(Sender: TObject);
begin
   if assigned(FOnStart) then FOnStart(Self);
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.DoStop(Sender: TObject);
begin
   if (FStopPos = -1) then FStopPos := Position;
   FWaveOut.Close;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.DoClose(Sender: TObject);
begin
   if not FResetPos then Position := FStopPos;
   if assigned(FOnStop) then FOnStop(Self);
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.DoPause(Sender: TObject);
begin
   if assigned(FOnPause) and not FSeeking then FOnPause(Self);
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.DoRestart(Sender: TObject);
begin
   if assigned(FOnRestart) and not FSeeking then FOnRestart(Self);
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.DoData(Sender: TObject; lpwh: PWaveHdr);
begin
   if assigned(FOnData) then FOnData(Self,lpwh);
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.Play;
begin
   if not (wosPlay in State) and not FWaveFile.Wave.Empty then
   begin
      if (Position >= FWaveFile.Wave.DataSize) then Position := 0;
      FStartPos := Position;
      FStopPos  := -1;
      FWaveOut.Start;
   end;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.Stop;
begin
   FStopPos := Position;
   FWaveOut.Stop;
   FWaveOut.Close;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.Pause;
begin
   if not (wosPause in State) and not FWaveFile.Wave.Empty then FWaveOut.Pause;
end;

{-- TMMWavePlayer -------------------------------------------------------------}
procedure TMMWavePlayer.Restart;
begin
   FWaveOut.Restart;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -