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

📄 yxgq.~pas

📁 这是一个delphi源码
💻 ~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 + -