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

📄 guimixerline.pas

📁 一整套声音录制控件
💻 PAS
字号:
unit guiMixerLine;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, WaveMixer, StdCtrls, ComCtrls;

type
  TfrmMixerLine = class(TForm)
    pnlName: TPanel;
    trbVolume: TTrackBar;
    pnlBottum: TPanel;
    cbxMute: TCheckBox;
    cbxSelect: TCheckBox;
    lblName: TLabel;
    procedure cbxSelectClick(Sender: TObject);
    procedure cbxMuteClick(Sender: TObject);
    procedure trbVolumeChange(Sender: TObject);
  private
    FMixerLine:TAudioMixerLine;
    FSelectEnabled:boolean;
    FSelecting:boolean;
  public
    constructor CreateLine(
      AOwner:TComponent; AParent:TWinControl; MixerLine:TAudioMixerLine;
      Master,SelectEnabled:boolean
    );
    procedure UpdateLine;
  end;

implementation

{$R *.dfm}

constructor TfrmMixerLine.CreateLine(
      AOwner:TComponent; AParent:TWinControl; MixerLine:TAudioMixerLine;
      Master,SelectEnabled:boolean
    );
begin
  Inherited Create(AOwner);
  Parent := AParent;
  FMixerLine := MixerLine;
  FSelectEnabled := SelectEnabled;
  FSelecting := False;
  if Master then
    lblName.Caption := 'Master ' + FMixerLine.Name
  else
    lblName.Caption := FMixerLine.Name;
  if mcVolume in FMixerLine.AvailableControls then
    trbVolume.Visible := True;
  if mcMute in FMixerLine.AvailableControls then
    cbxMute.Visible := True;
  if FSelectEnabled then
    cbxSelect.Visible := True;
end;

procedure TfrmMixerLine.UpdateLine;
begin
  if mcVolume in FMixerLine.AvailableControls then
    trbVolume.Position := 100 - FMixerLine.Volume;
  if mcMute in FMixerLine.AvailableControls then
    cbxMute.Checked := FMixerLine.Mute;
  if FSelectEnabled then
  begin
    FSelecting := True;
    cbxSelect.Checked :=
      FMixerLine.Mixer.Master.SelectedLine = FMixerLine.ID;
    FSelecting := False;
  end;
end;

procedure TfrmMixerLine.trbVolumeChange(Sender: TObject);
begin
  FMixerLine.Volume := 100 - trbVolume.Position;
end;

procedure TfrmMixerLine.cbxMuteClick(Sender: TObject);
begin
  if cbxMute.Checked <> FMixerLine.Mute then
    FMixerLine.Mute := cbxMute.Checked;
end;

procedure TfrmMixerLine.cbxSelectClick(Sender: TObject);
begin
  if FSelecting then
    exit;
  FMixerLine.Mixer.Master.SelectedLine := FMixerLine.ID;
end;


end.

⌨️ 快捷键说明

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