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

📄 mmrvbdlg.pas

📁 一套及时通讯的原码
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{========================================================================}
{=                (c) 1995-98 SwiftSoft Ronald Dittrich                 =}
{========================================================================}
{=                          All Rights Reserved                         =}
{========================================================================}
{=  D 01099 Dresden             = Tel.: +0351-8012255                   =}
{=  Loewenstr.7a                = info@swiftsoft.de                     =}
{========================================================================}
{=  Actual versions on http://www.swiftsoft.de/mmtools.html             =}
{========================================================================}
{=  This code is for reference purposes only and may not be copied or   =}
{=  distributed in any format electronic or otherwise except one copy   =}
{=  for backup purposes.                                                =}
{=                                                                      =}
{=  No Delphi Component Kit or Component individually or in a collection=}
{=  subclassed or otherwise from the code in this unit, or associated   =}
{=  .pas, .dfm, .dcu, .asm or .obj files may be sold or distributed     =}
{=  without express permission from SwiftSoft.                          =}
{=                                                                      =}
{=  For more licence informations please refer to the associated        =}
{=  HelpFile.                                                           =}
{========================================================================}
{=  $Date: 20.01.1998 - 18:00:00 $                                      =}
{========================================================================}
unit MMRvbDlg;

{$I COMPILER.INC}

interface

uses
{$IFDEF WIN32}
    Windows,
{$ELSE}
    WinTypes,
    WinProcs,
{$ENDIF}
    SysUtils,
    Messages,
    Consts,
    Classes,
    Dialogs,
    StdCtrls,
    Controls,
    ExtCtrls,
    Forms,
    MMObj,
    MMUtils,
    MMReverb,
    MMLEDS,
    MMSpin,
    MMSlider,
    MMString,
    MMEdit;

type
  {-- TMMReverbDlg ------------------------------------------------------}
  TMMReverbDlg = class(TForm)
    OpenDialog: TOpenDialog;
    SaveDialog: TSaveDialog;
    btnSave: TButton;
    btnLoad: TButton;
    btnReset: TButton;
    btnCancel: TButton;
    btnOK: TButton;
    Label1: TLabel;
    Bevel2: TBevel;
    Label3: TLabel;
    Label5: TLabel;
    Bevel4: TBevel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Bevel5: TBevel;
    Label17: TLabel;
    CheckBoxFilter: TCheckBox;
    Label4: TLabel;
    Label18: TLabel;
    Label19: TLabel;
    btnPreview: TButton;
    btnClear: TButton;
    Label20: TLabel;
    CheckBoxLine1: TCheckBox;
    CheckBoxLine2: TCheckBox;
    CheckBoxLine3: TCheckBox;
    CheckBoxLine4: TCheckBox;
    CheckBoxLine5: TCheckBox;
    CheckBoxLine6: TCheckBox;
    CheckBoxLine7: TCheckBox;
    CheckBoxLine8: TCheckBox;
    Label2: TLabel;
    LED1: TMMLED;
    Label9: TLabel;
    Timer1: TTimer;
    SliderInputGain: TMMSlider;
    SliderInputPan: TMMSlider;
    SliderOutputGain: TMMSlider;
    spinDelay1: TMMSpinButton;
    spinGain1: TMMSpinButton;
    spinDelay2: TMMSpinButton;
    spinDelay3: TMMSpinButton;
    spinDelay4: TMMSpinButton;
    spinDelay5: TMMSpinButton;
    spinDelay6: TMMSpinButton;
    spinDelay7: TMMSpinButton;
    spinDelay8: TMMSpinButton;
    spinFeedBack: TMMSpinButton;
    spinGain2: TMMSpinButton;
    spinGain3: TMMSpinButton;
    spinGain4: TMMSpinButton;
    spinGain5: TMMSpinButton;
    spinGain6: TMMSpinButton;
    spinGain7: TMMSpinButton;
    spinGain8: TMMSpinButton;
    edInputGain: TMMNumberEdit;
    edInputPan: TMMNumberEdit;
    edOutputGain: TMMNumberEdit;
    Bevel1: TBevel;
    Bevel3: TBevel;
    edDelay1: TMMNumberEdit;
    edDelay2: TMMNumberEdit;
    edDelay3: TMMNumberEdit;
    edDelay4: TMMNumberEdit;
    edDelay5: TMMNumberEdit;
    edDelay6: TMMNumberEdit;
    edDelay7: TMMNumberEdit;
    edDelay8: TMMNumberEdit;
    edGain1: TMMNumberEdit;
    edGain2: TMMNumberEdit;
    edGain3: TMMNumberEdit;
    edGain4: TMMNumberEdit;
    edGain5: TMMNumberEdit;
    edGain6: TMMNumberEdit;
    edGain7: TMMNumberEdit;
    edGain8: TMMNumberEdit;
    edFeedBack: TMMNumberEdit;
    procedure btnResetClick(Sender: TObject);
    procedure btnLoadClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
    procedure SliderTrack(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnPreviewClick(Sender: TObject);
    procedure btnClearClick(Sender: TObject);
    procedure CheckBoxLineClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure edExit(Sender: TObject);
    procedure spinChange(Sender: TObject);
    procedure edGainExit(Sender: TObject);
  private
    FOldEvent: TNotifyEvent;
    FReverb,FOrigReverb,FTmpReverb: TMMReverb;
    FTitle: String;
    procedure SetTitle(aValue: String);
    procedure SetReverb(aValue: TMMReverb);
    procedure UpdateControls;
    procedure UpdateReverb;
    procedure Overflow(Sender: TObject);
  public
    property Title: String read FTitle write SetTitle;
    property Reverb: TMMReverb write SetReverb;
  end;

  {-- TMMReverbDialog ---------------------------------------------------}
  TMMReverbDialog = class(TMMNonVisualComponent)
  private
    FPreview: Boolean;
    FSource: TMMReverb;
    FTitle : string;

    procedure SetSource(aSource: TMMReverb);

  protected
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;

  public
    constructor Create(AOwner: TComponent); override;
    function Execute: Boolean;

  published
    property Preview: Boolean read FPreview write FPreview;
    property Source: TMMReverb read FSource write SetSource;
    property Title: string read FTitle write FTitle;
  end;

var
  MMReverbDlg: TMMReverbDlg;

implementation

{$R *.DFM}

{== TMMReverbDlg ========================================================}
procedure TMMReverbDlg.FormCreate(Sender: TObject);
var
   i: integer;

begin
   FTitle := Caption;
   FReverb := nil;
   FTmpReverb := TMMReverb.Create(Self);
   FOrigReverb := TMMReverb.Create(Self);

   {$IFDEF BUILD_ACTIVEX}
   FTmpReverb.Left := -50;
   FOrigReverb.Left := -50;
   {$ENDIF}

   for i := 0 to ComponentCount-1 do
   if (Components[i] is TMMSpinButton) then
   begin
      if (TMMSpinButton(Components[i]).FocusControl <> nil) then
          TMMSpinButton(Components[i]).FocusControl.Tag := Longint(Components[i]);
   end;
end;

{-- TMMReverbDialog -----------------------------------------------------}
procedure TMMReverbDlg.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   if (ModalResult <> mrOK) then
   begin
      if (FReverb <> nil) then
      begin
         FReverb.Assign(FOrigReverb);
         FReverb.OnPcmOverflow := FOldEvent;
      end;
   end
   else
   begin
      UpdateReverb;
      if (FReverb <> nil) then
      begin
         FReverb.Assign(FTmpReverb);
         FReverb.OnPcmOverflow := FOldEvent;
      end;
   end;
end;

{-- TMMReverbDlg --------------------------------------------------------}
procedure TMMReverbDlg.FormDestroy(Sender: TObject);
begin
   FTmpReverb.Free;
   FOrigReverb.Free;
end;

{-- TMMReverbDlg --------------------------------------------------------}
procedure TMMReverbDlg.SetTitle(aValue: String);
begin
   if (aValue <> FTitle) then
   begin
      FTitle := aValue;
      Caption := FTitle + ' -  ' + FTmpReverb.Description;
   end;
end;

{-- TMMReverbDlg --------------------------------------------------------}
procedure TMMReverbDlg.UpdateControls;
begin
   with FTmpReverb do
   begin
      Caption                  := Title + ' -  '+ Description;
      SliderInputGain.Position := InputGain;
      edInputGain.Value        := InputGain;
      SliderInputPan.Position  := InputPan;
      edInputPan.Value         := InputPan;
      SliderOutputGain.Position:= OutputGain;
      edOutputGain.Value       := OutputGain;
      SpinFeedBack.Value       := FeedBack;
      CheckBoxFilter.Checked   := Filter;

      SpinDelay1.MaxValue  := MaxDelay;
      SpinDelay1.Value     := Echos[0].Delay;
      SpinGain1.Value      := Echos[0].Gain;
      CheckBoxLine1.Checked:= True;

      SpinDelay2.MaxValue  := MaxDelay;
      SpinDelay2.Value     := Echos[1].Delay;
      SpinGain2.Value      := Echos[1].Gain;
      CheckBoxLine2.Checked:= True;

      SpinDelay3.MaxValue  := MaxDelay;
      SpinDelay3.Value     := Echos[2].Delay;
      SpinGain3.Value      := Echos[2].Gain;
      CheckBoxLine3.Checked:= True;

      SpinDelay4.MaxValue  := MaxDelay;
      SpinDelay4.Value     := Echos[3].Delay;
      SpinGain4.Value      := Echos[3].Gain;
      CheckBoxLine4.Checked:= True;

      SpinDelay5.MaxValue  := MaxDelay;
      SpinDelay5.Value     := Echos[4].Delay;
      SpinGain5.Value      := Echos[4].Gain;
      CheckBoxLine5.Checked:= True;

⌨️ 快捷键说明

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