main.pas
来自「mp3 播放器 delphi 源码」· PAS 代码 · 共 1,262 行 · 第 1/5 页
PAS
1,262 行
{###############################################################################
# Dipesh-MP3yk Delphi-Sourcecode #
################################################################################
# by Sebastian Sauer (Dipesh) #
# email: mail@dipesh.de #
# url: www.dipesh.de #
# (C) 1999 - freeware, see the licenceagreements in readme.txt #
################################################################################
# MAIN.PAS - TMainForm #
# the mainform and -unit #
###############################################################################}
UNIT Main;
INTERFACE
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, ComCtrls, FileCtrl, Buttons, Menus,
Gauges, IniFiles, ShellApi,
MpegPlay, MpgTools, Vumeter; // Vcl-Components & Units
type
TMainForm = class(TForm)
PanelRight: TPanel;
PanelLeft: TPanel;
Splitter: TSplitter;
MPEGPlayer: TMPEGPlayer;
ButtonPanel: TPanel;
OpenDialog: TOpenDialog;
Splitter1: TSplitter;
PanelLeftCaption: TPanel;
PanelRightCaption: TPanel;
ItemsPanel: TPanel;
SaveDialog: TSaveDialog;
ImageListBtn: TImageList;
ListViewLeftPanel: TPanel;
ListViewRightPanel: TPanel;
ListViewRight: TListView;
ItemsPanel2: TPanel;
ButtonSelAll: TSpeedButton;
ButtonSelNone: TSpeedButton;
PopupMenuLeft: TPopupMenu;
PopupMenuRight: TPopupMenu;
PMlAddSel: TMenuItem;
PMlAddAll: TMenuItem;
PMlRemN: TMenuItem;
PMlSelNone: TMenuItem;
PMlSelGroup: TMenuItem;
PMlSelAll: TMenuItem;
PMrRemoveSel: TMenuItem;
PMrRemoveAll: TMenuItem;
N4: TMenuItem;
PMrPlay: TMenuItem;
PMrPause: TMenuItem;
PMrStop: TMenuItem;
PMrBack: TMenuItem;
PMrNext: TMenuItem;
ItemsPanelFlatButton: TSpeedButton;
ItemsPanel1: TPanel;
ButtonAddSel: TSpeedButton;
ButtonRemoveSel: TSpeedButton;
ButtonAddAll: TSpeedButton;
ButtonRemoveAll: TSpeedButton;
LeftTitleFlatButton: TSpeedButton;
RightTitleFlatButton: TSpeedButton;
ButtonPanelFlatButton: TSpeedButton;
ButtonPanel1: TPanel;
ButtonExit: TSpeedButton;
ButtonOpen: TSpeedButton;
ButtonPassword: TSpeedButton;
ButtonOptions: TSpeedButton;
ButtonAbout: TSpeedButton;
ButtonSave: TSpeedButton;
ButtonAddDir: TSpeedButton;
ButtonID3Tag: TSpeedButton;
ButtonAdd: TSpeedButton;
GaugePanel: TPanel;
Gauge: TGauge;
ButtonSelInvert: TSpeedButton;
PMlInvert: TMenuItem;
N1: TMenuItem;
PMlRemSel: TMenuItem;
PMlRemAll: TMenuItem;
MemoPanel: TPanel;
Memo: TMemo;
MemoFlatButton: TSpeedButton;
AddDialog: TOpenDialog;
ButtonSelect: TSpeedButton;
ButtonSelGroup: TSpeedButton;
SelectPopupMenu: TPopupMenu;
selectnone1: TMenuItem;
selectinvert1: TMenuItem;
selectall1: TMenuItem;
N2: TMenuItem;
selectgroup1: TMenuItem;
Vumeter: TVumeter;
PeakTimer: TTimer;
PlayerMainPanel: TPanel;
SongPanel: TPanel;
ButtonSong: TSpeedButton;
SongFlatButton: TSpeedButton;
PosPanel: TPanel;
PlayerPanel: TPanel;
PlayerPanel2: TPanel;
ButtonBack: TSpeedButton;
ButtonNext: TSpeedButton;
ButtonPause: TSpeedButton;
ButtonPlay: TSpeedButton;
ButtonStop: TSpeedButton;
Panel2: TPanel;
PlayerFlutButton: TSpeedButton;
PosFlatButton: TSpeedButton;
ScrollBar1: TScrollBar;
PeakPanel: TPanel;
PeakFlatButton: TSpeedButton;
PeakPanel2: TPanel;
PeakButtonClear: TSpeedButton;
PeakPanel3: TPanel;
Panel5: TPanel;
Panel6: TPanel;
Panel7: TPanel;
Panel8: TPanel;
PeakRight: TProgressBar;
PeakLeft: TProgressBar;
PosPanel2: TPanel;
LabelInfo: TLabel;
LabelNow: TLabel;
LabelTotal: TLabel;
ScrollBar: TScrollBar;
ButtonRandom: TSpeedButton;
LabelRem: TLabel;
Panel1: TPanel;
ListViewLeft: TListView;
SearchPanelLeft: TPanel;
SearchPanelRight: TPanel;
SearchEditLeft: TEdit;
SearchEditRight: TEdit;
ScrollPosLabel: TLabel;
procedure OnClose(Sender: TObject; var Action: TCloseAction);
procedure OnCreate(Sender: TObject);
procedure OnShow(Sender: TObject);
procedure OnActivate(Sender: TObject);
procedure ButtonPanel_OnResize(Sender: TObject);
procedure PlayerPanel_OnResize(Sender: TObject);
procedure MemoPanel_OnResize(Sender: TObject);
procedure SearchPanelLeft_OnResize(Sender: TObject);
procedure SearchPanelRight_OnResize(Sender: TObject);
procedure ButtonExit_OnClick(Sender: TObject);
procedure ButtonOpen_OnClick(Sender: TObject);
procedure ButtonAdd_OnClick(Sender: TObject);
procedure ButtonSave_OnClick(Sender: TObject);
procedure SaveDialog_OnTypeChange(Sender: TObject);
procedure ButtonAddDir_OnClick(Sender: TObject);
procedure ButtonSelect_OnClick(Sender: TObject);
procedure ButtonID3Tag_OnClick(Sender: TObject);
procedure ButtonPassword_OnClick(Sender: TObject);
procedure ButtonOptions_OnClick(Sender: TObject);
procedure ButtonAbout_OnClick(Sender: TObject);
procedure ListViewLeft_OnDblClick(Sender: TObject);
procedure ListViewLeft_OnKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure ListView_OnColumnClick(Sender: TObject; Column: TListColumn);
procedure ListViewRight_OnDblClick(Sender: TObject);
procedure ListViewRight_OnKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure ListView_OnDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
procedure ListView_OnDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure ListView_OnChange(Sender: TObject; Item: TListItem; Change: TItemChange);
procedure PopupMenuLeft_OnPopup(Sender: TObject);
procedure PopupMenuRight_OnPopup(Sender: TObject);
procedure SearchEditLeft_OnExit(Sender: TObject);
procedure SearchEditRight_OnExit(Sender: TObject);
procedure SearchEdit_OnChange(Sender: TObject);
procedure ButtonPanelFlatButton_OnClick(Sender: TObject);
procedure LeftTitleFlatButton_OnClick(Sender: TObject);
procedure RightTitleFlatButton_OnClick(Sender: TObject);
procedure ItemsPanelFlatButton_OnClick(Sender: TObject);
procedure MemoFlatButton_OnClick(Sender: TObject);
procedure SongFlatButton_OnClick(Sender: TObject);
procedure PeakFlatButton_OnClick(Sender: TObject);
procedure PosFlatButton_OnClick(Sender: TObject);
procedure PlayerFlatButton_OnClick(Sender: TObject);
procedure ButtonAddSel_OnClick(Sender: TObject);
procedure ButtonRemoveSel_OnClick(Sender: TObject);
procedure ButtonAddAll_OnClick(Sender: TObject);
procedure ButtonRemoveAll_OnClick(Sender: TObject);
procedure ButtonSelNone_OnClick(Sender: TObject);
procedure ButtonSelInvert_OnClick(Sender: TObject);
procedure ButtonSelAll_OnClick(Sender: TObject);
procedure ButtonSelGroup_OnClick(Sender: TObject);
procedure PMlRemSel_OnClick(Sender: TObject);
procedure PMlRemAll_OnClick(Sender: TObject);
procedure ButtonSong_OnClick(Sender: TObject);
procedure ButtonPlay_OnClick(Sender: TObject);
procedure ButtonPause_OnClick(Sender: TObject);
procedure ButtonStop_OnClick(Sender: TObject);
procedure ButtonBack_OnClick(Sender: TObject);
procedure ButtonNext_OnClick(Sender: TObject);
procedure MPEGPlayer_OnPosUpdate(Pos, Len: Integer);
procedure MPEGPlayer_OnPlayEnd(Sender: TObject);
procedure PeakTimer_OnTimer(Sender: TObject);
procedure PeakButtonClear_OnClick(Sender: TObject);
procedure ScrollBar_OnScroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer);
procedure ScrollBar_OnChange(Sender: TObject);
public
function FontToString(ThisFont: TFont): string;
function StringToFont(ThisString: string; var ToThisFont: TFont): boolean;
function AddToSongList(ToListKind: integer; Mp3file: string; GetSongnameFromID3Tag: boolean; UseThisSongname: string): TListItem;
procedure SetFontOrColor(SetNr: integer; SetThisFont: TFont; SetThisColor: TColor);
procedure ExecuteCom(ExecuteStr: string; ShowState: integer; ShowErrorMsg: boolean);
procedure ReadPlaylistfile(ThisPlaylistFileCom: string; ClearListBeforeAdding: boolean);
protected
procedure WndProc(var Message: TMessage);
procedure AppMessage(var Msg: TMsg; var Erledigt: Boolean);
procedure WMSysCommand(var Message: TMessage); message WM_SYSCOMMAND;
procedure ZoomMinimized;
procedure ZoomRestore;
procedure TrayMinimized;
procedure TrayRestore(MakeVisibleTrue: boolean);
procedure MsgNotAllowed;
private
TrayIconHandle: hWnd;
FNotifyIconData: TNotifyIconData;
end;
var flatButtonPanel, flatPanelLeftCaption, flatPanelRightCaption, flatItemsPanel, flatmemo,
flatsongpanel, flatpeakpanel, flatpospanel, flatplayerpanel, PosIsChangingNow: boolean;
mainleft, maintop, mainwidth, mainheight, mainsplitter1, mainsplitter2: integer;
StartDir, PasswordStr: string;
LastSongs: TStringList;
MpgAudio: TMPEGAudio;
MainForm: TMainForm;
const WM_SYSTRAY = WM_USER+$400;
IniFileCom: string = 'DMP3yk.ini';
// Player
PlaylistFileCom: string = '';
PlayingListItem: TListItem = nil;
PlayRandom: boolean = true;
PlayAutoStart: boolean = true;
PlayAutoRemove: boolean = true;
PlayAutoRandom: boolean = true;
PlayUseID3Tags: boolean = true;
PlayRemoveAfterBack: boolean = true;
PlayThisPlaylistfileOnStart: string = '';
SaveLastOpenPlaylistfile: boolean = false;
PosUpdateTime: integer = 1000;
PeakLevelUpdateTime: integer = 100;
// Password
IsNowProtected: boolean = false;
NeedPwForExit: boolean = true;
NeedPwForOpenPlaylist: boolean = true;
NeedPwForSavePlaylist: boolean = true;
NeedPwForAddDir: boolean = true;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?