📄 guiaudiodevice.pas
字号:
unit guiAudioDevice;
interface
uses
guiMixerLine,
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, WaveMixer;
type
TfrmAudioDevice = class(TForm)
AudioMixer1: TAudioMixer;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure AudioMixer1LineChange(Sender: TObject;
MixerLine: TAudioMixerLine);
procedure AudioMixer1ControlChange(Sender: TObject;
MixerLine: TAudioMixerLine; ControlType: TMixerControlType);
private
FfrmMaster : TfrmMixerLine;
FMixerLines: TList;
procedure FUpdate;
public
constructor CreateDevice(AOwner:TComponent; AParent:TWinControl; MixerID,DestinationID:Integer);
destructor Destroy; override;
end;
//var
// frmAudioDevice: TfrmAudioDevice;
implementation
{$R *.dfm}
constructor TfrmAudioDevice.CreateDevice(AOwner:TComponent; AParent:TWinControl; MixerID,DestinationID:Integer);
var
I:Integer;
blnRecordDevice:Boolean;
begin
Inherited Create(AOwner);
Parent := AParent;
AudioMixer1.MixerID := MixerID;
AudioMixer1.DestinationID := DestinationID;
blnRecordDevice := mcSelect in AudioMixer1.Master.AvailableControls;
FMixerLines := TList.Create;
if not blnRecordDevice then
if (mcVolume in AudioMixer1.Master.AvailableControls) or
(mcMute in AudioMixer1.Master.AvailableControls ) then
begin
FfrmMaster := TfrmMixerLine.CreateLine(
Self, Self, AudioMixer1.Master,
true, false
);
end;
for I := 0 to AudioMixer1.LineCount-1 do
begin
FMixerLines.Add(
TfrmMixerLine.CreateLine(
Self, Self, AudioMixer1.Lines[I], false, blnRecordDevice
)
);
end;
FUpdate;
end;
destructor TfrmAudioDevice.Destroy;
begin
while FMixerLines.Count > 0 do
begin
TfrmMixerLine(FMixerLines[0]).Free;
FMixerLines.Delete(0);
end;
FfrmMaster.Free;
inherited;
end;
procedure TfrmAudioDevice.FormShow(Sender: TObject);
var
I:Integer;
intLeft : Integer;
frmLine : TfrmMixerLine;
begin
intLeft := 0;
if FfrmMaster <> nil then
begin
FfrmMaster.Show;
FfrmMaster.Left := intLeft;
// FfrmMaster.Top := 17;
intLeft := FfrmMaster.Width;
end;
for I := 0 to FMixerLines.Count-1 do
begin
frmLine := FMixerLines[I];
frmLine.Show;
// frmLine.Top := 17;
frmLine.Left := intLeft;
intLeft := intLeft + frmLine.Width;
end;
end;
procedure TfrmAudioDevice.FormClose(Sender: TObject; var Action: TCloseAction);
var
I:Integer;
begin
if FfrmMaster <> nil then
FfrmMaster.Close;
for I := 0 to FMixerLines.Count-1 do
TfrmMixerLine(FMixerLines[I]).Close;
end;
procedure TfrmAudioDevice.FUpdate;
var
I:Integer;
begin
if FfrmMaster <> nil then
FfrmMaster.UpdateLine;
for I := 0 to FMixerLines.Count-1 do
TfrmMixerLine(FMixerLines[I]).UpdateLine;
end;
procedure TfrmAudioDevice.AudioMixer1ControlChange(Sender: TObject;
MixerLine: TAudioMixerLine; ControlType: TMixerControlType);
begin
FUpdate;
end;
procedure TfrmAudioDevice.AudioMixer1LineChange(Sender: TObject;
MixerLine: TAudioMixerLine);
begin
FUpdate;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -