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

📄 fmprogramproperties.pas

📁 Delphi的另一款钢琴软件
💻 PAS
字号:
unit fmProgramProperties;

interface

uses Windows, SysUtils, Classes, Graphics, Forms, Controls, StdCtrls,
  Buttons, ComCtrls, ExtCtrls, ImgList;

type
  TProgramProperties = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    PageControl1: TPageControl;
    Preferences: TTabSheet;
    MIDIOut: TTabSheet;
    MidiInput: TTabSheet;
    btnOk: TBitBtn;
    btnCancel: TBitBtn;
    cbShowHints: TCheckBox;
    cbInitialTracksheet: TCheckBox;
    cbAutoSynchronize: TCheckBox;
    imgsMidiInput: TImageList;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    lvUnselectedPorts: TListView;
    btnAddMidiPort: TBitBtn;
    btnRemoveMidiPort: TBitBtn;
    lvSelectedPorts: TListView;
    gbOutputPorts: TGroupBox;
    btnInstruments: TBitBtn;
    imgsMidiOutput: TImageList;
    cbDefaultOutput: TCheckBox;
    Label1: TLabel;
    edDragNoteVolume: TEdit;
    udDragNoteVolume: TUpDown;
    cbBoostPlaybackPriority: TCheckBox;
    elvOutputPorts: TListView;
    procedure lvUnselectedPortsChange(Sender: TObject; Item: TListItem;
      Change: TItemChange);
    procedure lvSelectedPortsChange(Sender: TObject; Item: TListItem;
      Change: TItemChange);
    procedure FormShow(Sender: TObject);
    procedure btnAddMidiPortClick(Sender: TObject);
    procedure btnRemoveMidiPortClick(Sender: TObject);
    procedure btnInstrumentsClick(Sender: TObject);
    procedure cbDefaultOutputClick(Sender: TObject);
    procedure elvOutputPortsChange(Sender: TObject; Item: TListItem;
      Change: TItemChange);
  private
    { Private declarations }
  public
  	DefaultPortNo : Integer;
    { Public declarations }
  end;

var
  ProgramProperties: TProgramProperties;

implementation

{$R *.DFM}

uses mmsystem, fmInstruments, fmMainForm;

procedure TProgramProperties.lvUnselectedPortsChange(Sender: TObject;
  Item: TListItem; Change: TItemChange);
begin
  btnAddMidiPort.Enabled := lvUnselectedPorts.Selected <> Nil;
end;

procedure TProgramProperties.lvSelectedPortsChange(Sender: TObject;
  Item: TListItem; Change: TItemChange);
begin
  btnRemoveMidiPort.Enabled := lvSelectedPorts.Selected <> Nil;
end;

procedure TProgramProperties.FormShow(Sender: TObject);
begin
  PageControl1.ActivePage := Preferences;
  btnAddMidiPort.Enabled := lvUnselectedPorts.Selected <> Nil;
  btnRemoveMidiPort.Enabled := lvSelectedPorts.Selected <> Nil;
  cbDefaultOutput.Enabled := False;
  cbDefaultOutput.Visible := elvOutputPorts.Items.Count > 1;
  btnInstruments.Enabled := False;
end;

procedure TProgramProperties.btnAddMidiPortClick(Sender: TObject);
var
  i : Integer;
  item : TListItem;
begin
  i := 0;
  with lvUnselectedPorts do
    while i < items.Count do
      if items [i].selected then
      begin
        item := lvSelectedPorts.Items.Add;
        item.caption := items [i].caption;
        items.Delete (i)
      end
      else Inc (i);
end;

procedure TProgramProperties.btnRemoveMidiPortClick(Sender: TObject);
var
  i : Integer;
  item : TListItem;
begin
  i := 0;
  with lvSelectedPorts do
    while i < items.Count do
      if items [i].selected then
      begin
        item := lvUnselectedPorts.Items.Add;
        item.caption := items [i].caption;
        items.Delete (i)
      end
      else Inc (i);
end;

procedure TProgramProperties.btnInstrumentsClick(Sender: TObject);
var
  dialog : TInstrumentsForm;
  portNo : Integer;
begin
  if Assigned (elvOutputPorts.Selected) then
  begin
    portNo := elvOutputPorts.Selected.Index;
    dialog := TInstrumentsForm.Create (self);
    try
      dialog.FileName := MainForm.GetOutputPortInstrumentName (portNo);
      if dialog.ShowModal = mrOk then
      begin
        elvOutputPorts.Selected.SubItems [1] := ExtractInstrumentName (dialog.FileName);
        MainForm.SetOutputPortInstrument (portNo, dialog.FileName);
      end
    finally
      dialog.Free
    end
  end
end;

procedure TProgramProperties.cbDefaultOutputClick(Sender: TObject);
begin
  if cbDefaultOutput.Focused and Assigned (elvOutputPorts.Selected) then
    if cbDefaultOutput.Checked then
      DefaultPortNo := elvOutputPorts.Selected.Index
    else
      DefaultPortNo := 0;
end;

procedure TProgramProperties.elvOutputPortsChange(Sender: TObject;
  Item: TListItem; Change: TItemChange);
begin
  cbDefaultOutput.Checked := Item.Index = DefaultPortNo;
  cbDefaultOutput.Enabled := Assigned (elvOutputPorts.Selected);
  btnInstruments.Enabled := Assigned (elvOutputPorts.Selected);
end;

end.

⌨️ 快捷键说明

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