📄 fmmainform.pas
字号:
(*==========================================================================*
| unit fmMainForm |
| |
| Main form for PowerSequencerPlus3.0 |
| |
| Copyright (c) Colin Wilson 1996 |
| |
| Version Date By Description |
| ------- -------- ---- ----------------------------------------------- |
| 1.0 14/12/96 CPWW Original |
*==========================================================================*)
unit fmMainForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, cmpMidiData, cmpMidiPlayer, Buttons, ExtCtrls, StdCtrls, ComCtrls, fmPower,
MMSystem, cmpMidiInput, fmStepMode, unitMidiGlobals, cmpInstrument,
cmpTrackOutputs, cmpTimeDisplay, cmpPosDisplay, fmTakes, PlaybackTempoForm,
ImgList, cmpRunOnce, cmpStandardSystemMenu, cmpPersistentPosition, XPMan;
type
TBoolVal = class
val : boolean;
end;
TMidiOutputPortDetails = class
name : string;
instrumentName : string;
instrument : TInstrument;
end;
TMainForm = class(TForm)
//-----------------------------------------------------
// File menu items
MainMenu: TMainMenu;
File1: TMenuItem;
FileNewSong: TMenuItem;
FileOpenSong: TMenuItem;
FileSaveSong: TMenuItem;
FileSaveSongAs: TMenuItem;
FileN1: TMenuItem;
FilePrint: TMenuItem;
FileN2: TMenuItem;
FileProperties: TMenuItem;
FileN3: TMenuItem;
FileExit: TMenuItem;
//-----------------------------------------------------
// Edit menu items
Edit1: TMenuItem;
EditUndelete: TMenuItem;
EditRedo: TMenuItem;
EditN1: TMenuItem;
EditCut: TMenuItem;
EditCopy: TMenuItem;
EditPaste: TMenuItem;
EditDelete: TMenuItem;
EditN2: TMenuItem;
EditSelectAll: TMenuItem;
EditSelecttostart: TMenuItem;
EditSelecttoend: TMenuItem;
//-----------------------------------------------------
// View menu items
View1: TMenuItem;
ViewEventList: TMenuItem;
ViewNoteEditor: TMenuItem;
ViewTempoMap: TMenuItem;
ViewTrackSheet: TMenuItem;
//-----------------------------------------------------
// Track menu items
Track1: TMenuItem;
TrackSelect: TMenuItem;
TrackN1: TMenuItem;
TrackSlide: TMenuItem;
TrackQuantize: TMenuItem;
TrackN2: TMenuItem;
TrackEraseAll: TMenuItem;
TrackKill: TMenuItem;
TrackN3: TMenuItem;
TrackStepModeRecord: TMenuItem;
TrackProperties: TMenuItem;
//-----------------------------------------------------
// Song menu items
Song1: TMenuItem;
SongProperties: TMenuItem;
//-----------------------------------------------------
// Window menu items
Window1: TMenuItem;
WindowCloseAll: TMenuItem;
WindowCascade: TMenuItem;
WindowTileHorizontal: TMenuItem;
WindowTileVertical: TMenuItem;
WindowMinimizeAll: TMenuItem;
//-----------------------------------------------------
// Help menu items
Help1: TMenuItem;
HelpAbout: TMenuItem;
HelpHowtoUseHelp: TMenuItem;
HelpSearchforHelpOn: TMenuItem;
HelpContents: TMenuItem;
//-----------------------------------------------------
// Button Bar items
pnlButtonBar: TPanel;
stPosition: TLabel; // Temporary song position label
//-----------------------------------------------------
// Transport bar items
pnlTransport: TPanel;
btnRewind: TSpeedButton;
btnStop: TSpeedButton;
btnPlay: TSpeedButton;
btnFfwd: TSpeedButton;
btnRecord: TSpeedButton;
//-----------------------------------------------------
// Status bar items
StatusBar: TStatusBar;
//-----------------------------------------------------
// Dialogs
OpenSongDialog: TOpenDialog;
SaveSongDialog: TSaveDialog;
PrintDialog: TPrintDialog;
PatchTypeImages: TImageList;
//-----------------------------------------------------
// MIDI controls
UpdateTimer: TTimer;
MidiData: TMidiData;
MidiPlayer: TMidiPlayer;
MidiInput: TMidiInput;
TrackOutputs: TTrackOutputs;
N1: TMenuItem;
GoTo1: TMenuItem;
SongGoToStart: TMenuItem;
SongGoToEnd: TMenuItem;
SongGoToPosition: TMenuItem;
pnlPosDisplay: TPanel;
PosDisplay: TPosDisplay;
TimeDisplay: TTimeDisplay;
Bevel1: TBevel;
Bevel2: TBevel;
Bevel3: TBevel;
Panel2: TPanel;
btnNew: TSpeedButton;
btnSave: TSpeedButton;
btnPrint: TSpeedButton;
btnOpen: TSpeedButton;
mnuViewTakes: TMenuItem;
ViewControllerMap: TMenuItem;
mnuSongPlaybackTempo: TMenuItem;
RunOnce1: TRunOnce;
PersistentPosition1: TPersistentPosition;
StandardSystemMenu1: TStandardSystemMenu;
XPManifest1: TXPManifest;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormShow(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
//-----------------------------------------------------
// File menu event handlers
procedure FileNewSongClick(Sender: TObject);
procedure FileOpenSongClick(Sender: TObject);
procedure FileSaveSongClick(Sender: TObject);
procedure FileSaveSongAsClick(Sender: TObject);
procedure FilePrintClick(Sender: TObject);
procedure FilePropertiesClick(Sender: TObject);
procedure FileExitClick(Sender: TObject);
//-----------------------------------------------------
// Edit menu event handlers
procedure EditSelectAllClick(Sender: TObject);
procedure EditCopyClick(Sender: TObject);
procedure EditCutClick(Sender: TObject);
procedure EditPasteClick(Sender: TObject);
//-----------------------------------------------------
// View menu event handlers
procedure ViewTrackSheetClick(Sender: TObject);
procedure ViewNoteEditorClick(Sender: TObject);
procedure ViewEventListClick(Sender: TObject);
procedure ViewTempoMapClick(Sender: TObject);
//-----------------------------------------------------
// Track menu event handlers
procedure TrackSelectClick(Sender: TObject);
procedure TrackEraseAllClick(Sender: TObject);
procedure TrackKillClick(Sender: TObject);
procedure TrackStepModeRecordClick(Sender: TObject);
procedure TrackPropertiesClick(Sender: TObject);
//-----------------------------------------------------
// Song menu event handlers
procedure SongPropertiesClick(Sender: TObject);
//-----------------------------------------------------
// Window menu event handlers
procedure WindowCascadeClick(Sender: TObject);
procedure WindowTileHorizontalClick(Sender: TObject);
procedure WindowTileVerticalClick(Sender: TObject);
procedure WindowCloseAllClick(Sender: TObject);
procedure WindowMinimizeAllClick(Sender: TObject);
//-----------------------------------------------------
// Help menu event handlers
procedure HelpAboutClick(Sender: TObject);
procedure HelpContentsClick(Sender: TObject);
procedure HelpHowtoUseHelpClick(Sender: TObject);
procedure HelpSearchforHelpOnClick(Sender: TObject);
//-----------------------------------------------------
// Transport button event handlers
procedure btnRewindClick(Sender: TObject);
procedure btnStopClick(Sender: TObject);
procedure btnPlayClick(Sender: TObject);
procedure btnFfwdClick(Sender: TObject);
procedure btnRecordClick(Sender: TObject);
//-----------------------------------------------------
// MIDI controls event handlers
procedure UpdateTimerTimer(Sender: TObject);
procedure MidiPlayerCallback(Sender: TObject; Event: PMidiEvent);
procedure MidiPlayerStop(Sender: TObject);
procedure MidiPlayerPlay(Sender: TObject);
procedure MidiPlayerFastForward(Sender: TObject);
procedure MidiInputStepData(const data: TEventData);
procedure PosDisplayBoxClicked(sender: TObject; Button: TMouseButton;
Shift: TShiftState; box: Integer);
procedure SongGoToStartClick(Sender: TObject);
procedure SongGoToEndClick(Sender: TObject);
procedure SongGoToPositionClick(Sender: TObject);
procedure mnuViewTakesClick(Sender: TObject);
procedure EditDeleteClick(Sender: TObject);
procedure ViewControllerMapClick(Sender: TObject);
procedure mnuSongPlaybackTempoClick(Sender: TObject);
procedure Song1Click(Sender: TObject);
procedure RunOnce1OtherInstance(Sender: TObject; ParamCount: Cardinal;
ParamStr: array of String);
private
ActiveForms : TList;
fCurrentTrackNo : Integer;
MidiDir : string;
MidiInputPorts : TStringList;
MidiOutputPorts : TList;
StepModeForm : TStepModeForm;
StepNoteCount : Integer;
fRecording : boolean;
TakesForm : TTakesForm;
//-----------------------------------------------------
// Helper functions for form properties
procedure SetCurrentTrackNo (value : Integer);
function GetCurrentTime : Integer;
function GetCurrentPosition : Integer;
procedure WMGetMinMaxInfo (var msg : TWMGetMinMaxInfo); message WM_GETMINMAXINFO;
procedure WMTempoChange (var msg : TMessage); message WM_TEMPOCHANGE;
//-----------------------------------------------------
// Misc. private functions
procedure OpenSong (fileName : string);
procedure NewSong;
function CloseSong : boolean;
function SaveSongAs : boolean;
function SaveSong : boolean;
procedure UpdateCurrentTrackDetails;
procedure SetCaption;
procedure SetMenuOptions;
procedure ReadProperties;
procedure ResetPatchNames;
public
//-----------------------------------------------------
// Constructor and destructor
DragNoteVolume : Integer;
SelStartPos, SelEndPos : Integer;
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
//-----------------------------------------------------
// Active forms list public functions
procedure AddActiveForm (frm : TForm);
procedure DeleteActiveForm (frm : TForm);
procedure NotifyActiveForms (tp : TActiveFormNotify);
procedure NotifyAll;
//-----------------------------------------------------
// Dialog public functions
function SelectTrackDialog (var trackNo : Integer; ShowTrack0 : boolean; ShowEmpty : boolean) : boolean;
procedure GetTrackProperties;
procedure DisplayCurrentPosition;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -