📄 mmwplay.pas
字号:
{-- 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 + -