📄 yxgq.~pas
字号:
unit YXGQ;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
jpeg, ExtCtrls, StdCtrls,DB,IBTable, Grids, DBGrids;
type
TYXGQForm = class(TForm)
LeftImage: TImage;
RightImage: TImage;
PriorPageLabel: TLabel;
NextPageLabel: TLabel;
ReturnLabel: TLabel;
DeleteLabel: TLabel;
YXLabel: TLabel;
NextLabel: TLabel;
GMLabel1: TLabel;
YLLabel1: TLabel;
YLLabel2: TLabel;
GMLabel2: TLabel;
YLLabel3: TLabel;
GMLabel3: TLabel;
YLLabel4: TLabel;
GMLabel4: TLabel;
YLLabel5: TLabel;
GMLabel5: TLabel;
YLLabel6: TLabel;
GMLabel6: TLabel;
YLLabel7: TLabel;
GMLabel7: TLabel;
YLLabel8: TLabel;
GMLabel8: TLabel;
YLLabel9: TLabel;
GMLabel9: TLabel;
YLLabel10: TLabel;
GMLabel10: TLabel;
ClickLabel1: TLabel;
ClickLabel2: TLabel;
ClickLabel3: TLabel;
ClickLabel4: TLabel;
ClickLabel5: TLabel;
ClickLabel6: TLabel;
ClickLabel7: TLabel;
ClickLabel8: TLabel;
ClickLabel9: TLabel;
ClickLabel10: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure PriorPageLabelClick(Sender: TObject);
procedure NextPageLabelClick(Sender: TObject);
procedure ReturnLabelClick(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure YXLabelClick(Sender: TObject);
procedure DeleteLabelClick(Sender: TObject);
procedure ClickLabel10Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure NextLabelClick(Sender: TObject);
private
MidString:String;
CurPage:Integer;
CurItem:Integer;
PageCount:Integer;
RecordCount:Integer;
YYLabel:Array [1..10] of TLabel;
GMLabel:Array [1..10] of TLabel;
ClickLabel:Array [1..10] of TLabel;
procedure RefreshOther;
procedure DrawPage(PageNum:Integer);
procedure SelectItem(ItemIndex:Integer);
procedure UnSelAll;
procedure NextPage;
procedure PriorPage;
procedure NextItem;
procedure PriorItem;
procedure RefreshCur;
{ Private declarations }
public
IsShow:Boolean;
procedure RefreshDisplay;
{ Public declarations }
end;
var
YXGQForm: TYXGQForm;
implementation
uses Data, SelectMusic, PYXG, JQPH, DBMain, SelectVideo, CurMusic;
{$R *.DFM}
procedure TYXGQForm.RefreshOther;
begin
try
if DBMainForm.CanAccess(SelectMusicForm) then //刷新显示
SelectMusicForm.FeteSelect.RefreshDisplay;
if DBMainForm.CanAccess(SelectVideoForm) then
SelectVideoForm.FeteSelect.RefreshDisplay;
if DBMainForm.CanAccess(PYXGForm) then
PYXGForm.RefreshCur;
if DBMainForm.CanAccess(JQPHForm) then
JQPHForm.JQPHSelect.RefreshDisplay;
except
end;
end;
procedure TYXGQForm.RefreshDisplay;
begin
DrawPage(CurPage);
end;
procedure TYXGQForm.RefreshCur;
begin
RecordCount:=CurMusicForm.CurList.Items.Count-1;
if (RecordCount) mod 10=0 then
PageCount:=RecordCount div 10
else
PageCount:=RecordCount div 10 +1;
if CurPage>PageCount-1 then
begin
if CurPage = 0 then
DrawPage(PageCount)
else
begin
DrawPage(PageCount-1);
SelectItem(9);
end;
end
else
begin
DrawPage(CurPage);
if CurPage=PageCount-1 then
begin
if CurItem<RecordCount mod 10 -1 then
SelectItem(CurItem)
else
SelectItem(RecordCount mod 10 -1);
end
else
SelectItem(CurItem);
end;
end;
procedure TYXGQForm.NextPage;
begin
if CurPage<PageCount-1 then
begin
DrawPage(CurPage+1);
SelectItem(0);
end
end;
procedure TYXGQForm.PriorPage;
begin
if CurPage>0 then
begin
DrawPage(CurPage-1);
SelectItem(0);
end;
end;
procedure TYXGQForm.NextItem;
begin
if CurPage=PageCount-1 then
SelectItem((CurItem + 1) mod (RecordCount mod 10))
else
SelectItem((CurItem + 1) mod 10);
end;
procedure TYXGQForm.PriorItem;
begin
if CurPage=0 then
SelectItem((CurItem-1+(RecordCount mod 10)) mod (RecordCount mod 10))
else
SelectItem((CurItem+9) mod 10);
end;
procedure TYXGQForm.UnSelAll;
var
i:Integer;
begin
For i:=1 to 10 do
begin
YYLabel[i].Font.Color:=clBlue;
GMLabel[i].Font.Color:=clBlue;
end;
end;
procedure TYXGQForm.DrawPage(PageNum:Integer);
var
C_Index,i,Count:Integer;
begin
CurPage:=PageNum;
Count := PageNum*10+10;
For i:=PageNum*10+1 to Count do
begin
C_Index := i - PageNum*10;
if (i < CurMusicForm.CurList.Items.Count) then
begin
YYLabel[C_Index].Caption:= CurMusicForm.GetValue(i,C_SM);
GMLabel[C_Index].Caption:=CurMusicForm.CurList.Items[i].Caption;
end
else
begin
YYLabel[C_Index].Caption:='';
GMLabel[C_Index].Caption:='';
end;
end;
end;
procedure TYXGQForm.SelectItem(ItemIndex:Integer);
begin
if YYLabel[ItemIndex+1].Caption='' then
Exit;
CurItem:=ItemIndex;
UnSelAll;
YYLabel[CurItem+1].Font.Color:=clRed;
GMLabel[CurItem+1].Font.Color:=clRed;
end;
procedure TYXGQForm.FormCreate(Sender: TObject);
begin
IsShow := false;
Left:=0;
Top:=0;
end;
procedure TYXGQForm.FormShow(Sender: TObject);
begin
IsShow := true;
YYLabel[1]:=YLLabel1;
YYLabel[2]:=YLLabel2;
YYLabel[3]:=YLLabel3;
YYLabel[4]:=YLLabel4;
YYLabel[5]:=YLLabel5;
YYLabel[6]:=YLLabel6;
YYLabel[7]:=YLLabel7;
YYLabel[8]:=YLLabel8;
YYLabel[9]:=YLLabel9;
YYLabel[10]:=YLLabel10;
GMLabel[1]:=GMLabel1;
GMLabel[2]:=GMLabel2;
GMLabel[3]:=GMLabel3;
GMLabel[4]:=GMLabel4;
GMLabel[5]:=GMLabel5;
GMLabel[6]:=GMLabel6;
GMLabel[7]:=GMLabel7;
GMLabel[8]:=GMLabel8;
GMLabel[9]:=GMLabel9;
GMLabel[10]:=GMLabel10;
ClickLabel[1]:=ClickLabel1;
ClickLabel[2]:=ClickLabel2;
ClickLabel[3]:=ClickLabel3;
ClickLabel[4]:=ClickLabel4;
ClickLabel[5]:=ClickLabel5;
ClickLabel[6]:=ClickLabel6;
ClickLabel[7]:=ClickLabel7;
ClickLabel[8]:=ClickLabel8;
ClickLabel[9]:=ClickLabel9;
ClickLabel[10]:=ClickLabel10;
UnSelAll;
MidString:='';
RecordCount:=CurMusicForm.CurList.Items.Count-1;
if RecordCount mod 10 = 0 then
PageCount:=RecordCount div 10
else
PageCount:=RecordCount div 10 + 1;
DrawPage(0);
SelectItem(0);
end;
procedure TYXGQForm.PriorPageLabelClick(Sender: TObject);
begin
PriorPage;
end;
procedure TYXGQForm.NextPageLabelClick(Sender: TObject);
begin
NextPage;
end;
procedure TYXGQForm.ReturnLabelClick(Sender: TObject);
begin
Close;
end;
procedure TYXGQForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
CurValue,NextValue,BeginValue:Integer;
TempList:TStringList;
BookMark:TBookMark;
CurPosition:Integer;
begin
if Key=VK_UP then
PriorItem;
if Key=VK_DOWN then
NextItem;
if Key=33 then
PriorPage;
if Key=34 then
NextPage;
if (Key=$30) or (Key=VK_NUMPAD0) then
SelectItem(9);
if (Key=$31) or (Key=VK_NUMPAD1) then
SelectItem(0);
if (Key=$32) or (Key=VK_NUMPAD2) then
SelectItem(1);
if (Key=$33) or (Key=VK_NUMPAD3) then
SelectItem(2);
if (Key=$34) or (Key=VK_NUMPAD4) then
SelectItem(3);
if (Key=$35) or (Key=VK_NUMPAD5) then
SelectItem(4);
if (Key=$36) or (Key=VK_NUMPAD6) then
SelectItem(5);
if (Key=$37) or (Key=VK_NUMPAD7) then
SelectItem(6);
if (Key=$38) or (Key=VK_NUMPAD8) then
SelectItem(7);
if (Key=$39) or (Key=VK_NUMPAD9) then
SelectItem(8);
if (Key=69) or (Key=75) then
MidString:=CHR(Key);
if (Key in [$30..$39,96..105]) and (UpperCase(MidString)='K') then
begin
if Key in [96..105] then
Key:=$30+Key-96;
if YYLabel[Key-$30].Caption='' then
Exit;
if KEY=$30 then
CurMusicForm.SetItemFirst(CurMusicForm.CurList.Items[CurPage*10+1+9])
else
CurMusicForm.SetItemFirst(CurMusicForm.CurList.Items[CurPage*10+1+Key-$30-1]);
CurMusicForm.RefreshSM;
RefreshCur;
RefreshOther;
MidString:='';
if DBMainForm.CurLabel<>'' then
begin
DBMainForm.StatusLabel.Caption:=DBMainForm.CurLabel;
DBMainForm.CurLabel:='';
end;
end;
if (Key in [$30..$39,96..105]) and (UpperCase(MidString)='E') then
begin
if Key in [96..105] then
Key:=$30+Key-96;
if KEY=$30 then
CurPosition := CurPage*10+1+9
else
CurPosition := CurPage*10+1+Key-$30-1;
if CurPosition < CurMusicForm.CurList.Items.Count then
begin
CurMusicForm.Delete(CurPosition);
// ReStoreSM;
CurMusicForm.RefreshSM;
RefreshCur;
RefreshOther;
end;
MidString:='';
if DBMainForm.CurLabel<>'' then
begin
DBMainForm.StatusLabel.Caption:=DBMainForm.CurLabel;
DBMainForm.CurLabel:='';
end;
end;
if (Key=70) then
Close;
end;
procedure TYXGQForm.YXLabelClick(Sender: TObject);
var
Key:word;
begin
key:=75;
FormKeyDown(YXLabel,Key,[]);
if DBMainForm.CurLabel='' then
DBMainForm.CurLabel:=DBMainForm.StatusLabel.Caption;
DBMainForm.StatusLabel.Caption:='请选择要优先的歌曲';
//key:=CurItem+1+$30;
//FormKeyDown(YXLabel,Key,[]);
end;
procedure TYXGQForm.DeleteLabelClick(Sender: TObject);
var
Key:word;
begin
key:=69;
FormKeyDown(YXLabel,Key,[]);
if DBMainForm.CurLabel='' then
DBMainForm.CurLabel:=DBMainForm.StatusLabel.Caption;
DBMainForm.StatusLabel.Caption:='请选择要删除的歌曲';
//key:=CurItem+1+$30;
//FormKeyDown(YXLabel,Key,[]);
end;
procedure TYXGQForm.ClickLabel10Click(Sender: TObject);
var
Key:word;
begin
SelectItem(TLabel(Sender).Tag-1);
if UpperCase(MidString)='K' then
begin
key:=CurItem+1+$30;
FormKeyDown(YXLabel,Key,[]);
end;
if UpperCase(MidString)='E' then
begin
key:=CurItem+1+$30;
FormKeyDown(YXLabel,Key,[]);
end;
end;
procedure TYXGQForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
IsShow := false;
// Action:=caFree;
end;
procedure TYXGQForm.NextLabelClick(Sender: TObject);
begin
DBMainForm.RealMagic.stop;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -