📄 main.pas
字号:
dragPos:=Form;//取得鼠标的位置
if Form1.Visible then
Form3.CanAccept(messmove);
if GDragLbNamLb or GDragMorFilLb then
begin
GDragLbNamLb:=False;
GDragMorFilLb:=False;
end;
if Fdown then
begin //设置鼠标拖动窗口
Left := Left + X - FOldX;
Top :=Top + Y - FOldY;
end;
if Form3.Visible then
Form3.OnShow(sender);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form2.Show;
Application.ProcessMessages;
end;
procedure TForm1.FulScrPopClick(Sender: TObject);
begin
if (Form2.Visible=False) and (Form5.Visible=False) then
Form1.ScreenClick(Sender)
Else
Form2.Panel1DblClick(Sender);
end;
procedure TForm1.NextPClick(Sender: TObject);
begin
NexClick(Sender);
end;
procedure TForm1.PictureMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDown:=True;
Foldx:=x;//保存鼠标按下时的位置
Foldy:=y;
end;
procedure TForm1.PictureMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Fdown:=False;
end;
procedure TForm1.DotTimTimer(Sender: TObject);
begin
try
if (Mediaplayer1.Mode in [mpplaying] ) and (not dotPress) then
dotIm.Left:=barIm.Left+round(Mediaplayer1.Position/freq);
Except
Exit;
end;
end;
procedure TForm1.DotImMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
dotPress:=True;
DotDownx:=x;
end;
procedure TForm1.DotImMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
dotPress:=False;
if Mediaplayer1.Mode in [Mpplaying,mppaused] then
begin //若正在播放或暂停时,实时拖动
Mediaplayer1.stop;//调节进度时,Mediaplayer会自动停止
Mediaplayer1.Position:=round(abs((dotIm.left-barIm.left))*Freq);
if PauseSign.Visible then
PauseSignClick(Sender)
Else
Mediaplayer1.Play;
DotTim.Enabled:=True;
end;
end;
procedure TForm1.DotImMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
DotMax:integer;
CanMove:boolean;
begin
DotMax:=BarIm.Left+barIm.width-DotIm.WIdth;
Movex:=x;
CanMove:=(dotIm.Left<=DotMax) and (dotIm.Left>=barIm.Left);
if (Mediaplayer1.Mode in [mpPlaying,mppaused]) and (DotPress and canMove) then
begin //若正在播放或暂停时,实现实时托动
DotTim.Enabled:=False;
{if dotIm.Left>DotMax then
begin
dotIm.Left:=DotMax;
Exit;
end;
if dotIm.Left<barIm.Left then
dotIm.Left:=BarIm.Left;}
dotIm.Left:=dotIm.Left+x-dotDownx;
//Form1.Edit1.Text:='DotLeft:'+IntToStr(dotIm.Left)+'sdfd';//+IntToStr(Foldy);
end;
end;
procedure TForm1.BarImDblClick(Sender: TObject);
var
shift:tshiftState;
begin
DotPress:=True;
DotImMouseMove(Sender,shift,0,0);
end;
procedure TForm1.BarImMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if button<>mbLeft then Exit;
dotPress:=True;
Movex:=x;
if (Mediaplayer1.Mode=mpplaying) and (DotPress) then
begin
DotTim.Enabled:=False;
dotIm.Left:=X+barIm.left;
Mediaplayer1.Position:=X*freq;
Mediaplayer1.Play;
end;
end;
procedure TForm1.BarImMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
dotPress:=False;
DotTim.Enabled:=True;
end;
procedure TForm1.BarImMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
barMove.X:=x;
barMove.Y:=y;
end;
procedure TForm1.ShortCutOPenBtClick(Sender: TObject);
begin
PlaySbtclick(Sender);//ChanLan1();
end;
procedure TForm1.Label5MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (Button=mbLeft) then
begin //进入移动状态
SendMessage(self.Handle,WM_LBUTTONUP,0,0);
SendMessage(self.Handle,WM_NCLBUTTONDOWN,HTCaption,0);
end;
end;
procedure TForm1.OPenMenuClick(Sender: TObject);
begin
PlaySbtClick(Sender);
end;
procedure TForm1.PlaySbtClick(Sender: TObject);
var
DrawIndex: Integer;
Rect: TRect;
begin
Try
case MediaPlayer1.Mode of
mpNotready : Openclick(Sender);//刚开始处的状态
mpstopped,mpseeking:
begin
Mediaplayer1.Open;
mediaplayer1.Play;
Form1.PlayInf(MediaPlayer1.FileName);
Form1.Picture1(MediaPlayer1.FileName);
end;
mppaused: Form1.PauseClick(); //Mediaplayer1.Mode<>mpplaying;
Else
begin
if (Mediaplayer1.Mode=mpplaying) and (enter=False) then
Form1.PauseClick()
Else
if (HaveDrag=1) or (currentFile<>'') or
enter or (Mediaplayer1.Mode=mpstopped) then
begin//难点处理此事件
if PauseSign.Visible then
Form1.PauseClick();
Mediaplayer1.FileName:=CurrentFile;
Mediaplayer1.Open;
Mediaplayer1.Play;//处理文件信息,如是否为视频
Form1.Picture1(MediaPlayer1.FileName);
Form1.PlayInf(MediaPlayer1.FileName);
end
Else
Openclick(Sender);
end;
with Form3 do
//LbNameDrawItem(Control,DrawIndex,Rect(LbName.left,LbName.top,(Left+width),(top+Height)),State);
end;
Except
showmessage('不能播放此格式!');
Exit;
end;
end;
procedure TForm1.FastOpenBitClick(Sender: TObject);
begin
PlaySbtClick(Sender);
end;
procedure TForm1.CtrlVolumeClick(Sender: TObject);//打开 Windows 声音窗口
var
OPenReturn:cardinal;
sysDir:pchar;
OPenFlag:integer;
begin
OPenReturn:=shellexecute(handle,'open',//
'sndvol32.exe',0,nil,SW_ShowNormal);
if OPenReturn<>42 then
begin//打开 Windows 声音窗口
winexec('Rundll32.exe Shell32.dll,Control_RunDLL mmsys.cpl,,0',Sw_showNormal);
end;//若是Control_RunDll,则出错丢失条目 Control_RunDll
end;
procedure TForm1.LockScrClick(Sender: TObject);
begin
LockScr.Checked:=not LockScr.Checked;
end;
procedure TForm1.ExitPlayClick(Sender: TObject);//关闭播放器
begin
//Application.Terminate;
Form1.close;//用Application.Terminate不会触发FormCloseQuery事件,不能保存播放列表
end;
procedure TForm1.PlayListSdbClick(Sender: TObject);
begin
Form3.Visible:=not Form3.Visible;
end;
procedure TForm1.StopSdbClick(Sender: TObject);
begin
if MediaPlayer1.Mode in [mpplaying,mppaused] then
begin
MediaPlayer1.Stop;
LbRunTimer.enabled:=False;
DotIm.Left:=barIm.Left;
Label1.caption:='播放已停止';//关闭后DeviceID仍为1
//Label1.caption:=IntTostr(MediaPlayer1.DeviceID);
end;
end;
procedure TForm1.OpenSoundWinClick(Sender: TObject);
begin
CtrlVolumeClick(sender);
end;
procedure TForm1.OpenHelpClick(Sender: TObject);
var
shift:TshiftState;
key:word;
begin
key:=Vk_F1;//调用 Form的 KeyDown事件,打开帮助文件
Form1.KeyDown(key,shift);
end;
procedure TForm1.ToMainFormClick(Sender: TObject);
var
shift:TshiftState;
key:word;
begin
key:=Vk_F11;//调用 Form的 KeyDown事件,打开帮助文件
Form2.FormKeyDown(sender,key,shift);
end;
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Form2.Formkeydown(Sender,Key,Shift);
end;
procedure TForm1.OpenClick(Sender: TObject);
var
i:integer;
begin
try//-[ofAllowMultiSelect];//设置只能单选
Opendialog1.Title:='请选择多个文件';
if OpenDialog1.Execute=False then Exit;
currentFile:=OpenDialog1.Filename;
case MediaPlayer1.Mode of
Mppaused:
Form1.PauseClick();
mpplaying:
StopSdb.OnClick(sender);
end;
curpos:=Form3.MoreFilNameLb.Items.Count-2;//默认当前为0
for i:=0 to (Form1.OpenDialog1.Files.Count-1) do
begin //添加到正在播放的列表中
CurrentFile:=Form1.OpenDialog1.Files.strings[i];
Form3.MoreFilNameLb.Items.Add(GetFileName(currentFile));
Form3.MoreFilPathLb.Items.Add(currentFile);
end;//ComboBox1的Style为CcsDropDownList时
//改它的text为'正在播放'无效
if Form3.ComboBox1.ItemIndex<>0 then//如果不是"正在播放" 的列表
begin
Form3.ComboBox1.ItemIndex:=0;
Form3.ComboBox1Change(sender);
end
else
begin
MediaPlayer1.FileName:=CurrentFile;
MediaPlayer1.Open;
MediaPlayer1.Play;
Picture1(MediaPlayer1.FileName);
PlayInf(CurrentFile); //处理时间显示等信息
end;
Except //将打开的文件添加到 "正在播放"的列表中
begin
showmessage('不能播放此格式!');
Exit;
end;
end;
end;
procedure TForm1.StopSdbDblClick(Sender: TObject);
begin
if MediaPlayer1.Mode=mpplaying then
begin
MediaPlayer1.Stop;
LbRunTimer.enabled:=False;
DotIm.Left:=barIm.Left;
end;
end;
procedure TForm1.MaxVolImMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
VolIncIm.Width:=x;
SetVolume(x*round(65535/MaxVolIm.Width));
if not Label1.visible then
Label1.show;
Label1.caption:='当前音量:'+IntToStr(round(100*(x/MaxVolIm.Width)))+'%';
end;
procedure TForm1.FormminClick(Sender: TObject);
begin
//Form1.visible:=false;最小化到任务栏上)
Application.minimize;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -