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

📄 gxxz.~pas

📁 这是一个delphi源码
💻 ~PAS
字号:
unit GXXZ;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  jpeg, ExtCtrls, StdCtrls;

type
  TGXXZForm = class(TForm)
    LeftImage: TImage;
    GXXZImage: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Image7: TImage;
    Image8: TImage;
    Image9: TImage;
    PageLabel: TLabel;
    PageUpLabel: TLabel;
    PageDownLabel: TLabel;
    ReturnLabel: TLabel;
    SelectedImage: TImage;
    Image10: TImage;
    Image11: TImage;
    Image12: TImage;
    Image13: TImage;
    Image14: TImage;
    Image15: TImage;
    Image16: TImage;
    Image17: TImage;
    GXXPImage: TImage;
    CurGXImage: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label8: TLabel;
    Label7: TLabel;
    Label6: TLabel;
    Label5: TLabel;
    CurGXLabel: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Image2Click(Sender: TObject);
    procedure PageUpLabelClick(Sender: TObject);
    procedure PageDownLabelClick(Sender: TObject);
    procedure ReturnLabelClick(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    CurPage:Integer;
    PageCount:Integer;
    CurItem:Integer;
    GXXMLabel:Array [1..8] of TLabel;
    GXImage:Array [1..8] of TImage;
    SelImage:Array [1..8] of TImage;
    procedure DrawPage(PageNum:Integer);
    procedure SelectItem(ItemIndex:Integer);
    procedure SelItem(ItemIndex:Integer);
    procedure NextItem;
    procedure PriorItem;
    procedure NextPage;
    procedure PriorPage;
    procedure UnSelAll;
    procedure AgreeCurSel;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  GXXZForm: TGXXZForm;

implementation

uses Data, SelectMusic;

{$R *.DFM}

procedure TGXXZForm.SelItem(ItemIndex:Integer);
begin
  if (CurPage=PageCount-1) and (ItemIndex-1>DataMod.GXKDataSet.RecordCount mod 8-1) then
    Exit;
  SelectItem(ItemIndex-1);
  AgreeCurSel;
end;
procedure TGXXZForm.NextItem;
begin
  SelectItem((CurItem+1) mod 8);
end;
procedure TGXXZForm.PriorItem;
begin
  SelectItem((CurItem+7) mod 8);
end;
procedure TGXXZForm.NextPage;
begin
  if CurPage<PageCount-1 then
    begin
      DrawPage(CurPage+1);
      SelectItem(1);
    end;
end;
procedure TGXXZForm.PriorPage;
begin
  if CurPage>0 then
    begin
      DrawPage(CurPage-1);
      SelectItem(1);
    end;
end;
procedure TGXXZForm.AgreeCurSel;
begin
DataMod.GXKDataSet.First;
DataMod.GXKDataSet.MoveBy(CurPage*8+CurItem);
DataMod.GQKDataSet.Close;
DataMod.GQKDataSet.SQL.Text:='Select * from gqk where GXXM='''+DataMod.GXKDataSet.FieldByName('MC').AsString+''' order by gmpy,gqzs';
DataMod.GQKDataSet.Open;
SelectMusicForm:=TSelectMusicForm.Create(self);
try
  if (DataMod.GXKDataSet.FieldByName('TPLJ').AsString<>'') and (FileExists(DataMod.GXKDataSet.FieldByName('TPLJ').AsString)) then
    CurGXImage.Picture.LoadFromFile(DataMod.GXKDataSet.FieldByName('TPLJ').AsString);
except
  CurGXImage.Picture.Assign(nil);
end;
GXXPImage.BringToFront;
CurGXImage.BringToFront;
CurGXLabel.Font.Size:=GXXMLabel[CurItem+1].Font.Size;
CurGXLabel.Top:=482+(47-CurGXLabel.Height) div 2;
CurGXLabel.Left:=28+(119-CurGXLabel.Width) div 2;
CurGXLabel.Caption:=GXXMLabel[CurItem+1].Caption;
CurGXLabel.BringToFront;
SelectMusicForm.ShowModal;
GXXPImage.SendToBack;
CurGXImage.SendToBack;
CurGXLabel.SendToBack;
end;
procedure TGXXZForm.UnSelAll;
begin
SelImage[1].Picture:=nil;
SelImage[2].Picture:=nil;
SelImage[3].Picture:=nil;
SelImage[4].Picture:=nil;
SelImage[5].Picture:=nil;
SelImage[6].Picture:=nil;
SelImage[7].Picture:=nil;
SelImage[8].Picture:=nil;
end;
procedure TGXXZForm.DrawPage(PageNum:Integer);
var
  i:Integer;
begin
CurPage:=PageNum;
DataMod.GXKDataSet.First;
DataMod.GXKDataSet.MoveBy(PageNum*8);
For i:=0 to 7 do
  begin
    if not DataMod.GXKDataSet.Eof then
      begin
        try
          if (DataMod.GXKDataSet.FieldByName('TPLJ').AsString<>'') and (FileExists(DataMod.GXKDataSet.FieldByName('TPLJ').AsString)) then
             GXImage[i+1].Picture.LoadFromFile(DataMod.GXKDataSet.FieldByName('TPLJ').AsString);
        except
          GXImage[i+1].Picture.Assign(nil);
        end;
      //显示歌星姓名
      GXXMLabel[i+1].Caption:=DataMod.GXKDataSet.FieldByName('MC').AsString;
      if Length(GXXMLabel[i+1].Caption)>6 then
      begin
        GXXMLabel[i+1].Font.Size:=Round(22*6/Length(GXXMLabel[i+1].Caption));
        GXXMLabel[i+1].Top:=GXImage[i+1].Top+158+(40-GXXMLabel[i+1].Canvas.TextHeight(GXXMLabel[i+1].Caption)) div 2;
        GXXMLabel[i+1].Left:=GXImage[i+1].Left+20+(100-GXXMLabel[i+1].Width) div 2;
      end
      else
      begin
        GXXMLabel[i+1].Font.Size:=22;
        GXXMLabel[i+1].Top:=GXImage[i+1].Top+158+(40-GXXMLabel[i+1].Canvas.TextHeight(GXXMLabel[i+1].Caption)) div 2;
        GXXMLabel[i+1].Left:=GXImage[i+1].Left+20+(100-GXXMLabel[i+1].Width) div 2;
      end;
      end
    else
    begin
      GXImage[i+1].Picture.Assign(nil);
      GXXMLabel[i+1].Caption:='';
    end;
    DataMod.GXKDataSet.Next;
  end;
PageLabel.Caption:=IntToStr(CurPage+1)+'/'+IntToStr(PageCount);
PageLabel.Left:=210+(97-PageLabel.Canvas.TextWidth(PageLabel.Caption)) div 2;
end;
procedure TGXXZForm.SelectItem(ItemIndex:Integer);
begin
if (CurPage=PageCount-1) and (ItemIndex>DataMod.GXKDataSet.RecordCount mod 8-1) then
  Exit;
CurItem:=ItemIndex;
UnSelAll;
SelImage[CurItem+1].Canvas.CopyRect(SelImage[CurItem+1].ClientRect,SelectedImage.Canvas,Rect(SelImage[CurItem+1].Left-LeftImage.Width,SelImage[CurItem+1].Top,SelImage[CurItem+1].Left+SelImage[CurItem+1].Width-LeftImage.Width,SelImage[CurItem+1].Top+SelImage[CurItem+1].Height));
end;
procedure TGXXZForm.FormCreate(Sender: TObject);
begin
Top:=0;
Left:=0;
end;

procedure TGXXZForm.FormShow(Sender: TObject);
begin
DataMod.GXKDataSet.Last;
if DataMod.GXKDataSet.RecordCount mod 8=0 then
  PageCount:=DataMod.GXKDataSet.RecordCount div 8
else
  PageCount:=DataMod.GXKDataSet.RecordCount div 8 + 1;
GXXMLabel[1]:=Label1;
GXXMLabel[2]:=Label2;
GXXMLabel[3]:=Label3;
GXXMLabel[4]:=Label4;
GXXMLabel[5]:=Label5;
GXXMLabel[6]:=Label6;
GXXMLabel[7]:=Label7;
GXXMLabel[8]:=Label8;

GXImage[1]:=Image2;
GXImage[2]:=Image3;
GXImage[3]:=Image4;
GXImage[4]:=Image5;
GXImage[5]:=Image6;
GXImage[6]:=Image7;
GXImage[7]:=Image8;
GXImage[8]:=Image9;

SelImage[1]:=Image10;
SelImage[2]:=Image11;
SelImage[3]:=Image12;
SelImage[4]:=Image13;
SelImage[5]:=Image14;
SelImage[6]:=Image15;
SelImage[7]:=Image16;
SelImage[8]:=Image17;

DrawPage(0);
SelectItem(0);
end;

procedure TGXXZForm.Image2Click(Sender: TObject);
begin
SelItem(TImage(Sender).Tag);
end;

procedure TGXXZForm.PageUpLabelClick(Sender: TObject);
begin
PriorPage;
end;

procedure TGXXZForm.PageDownLabelClick(Sender: TObject);
begin
NextPage;
end;

procedure TGXXZForm.ReturnLabelClick(Sender: TObject);
begin
Close;
end;

procedure TGXXZForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if Key=VK_UP then
  SelectItem((CurItem+4) mod 8);
if Key=VK_DOWN then
  SelectItem((CurItem+4) mod 8);
if Key=VK_LEFT then
  PriorItem;
if Key=VK_RIGHT then
  NextItem;
if Key=33 then
  PriorPage;
if Key=34 then
  NextPage;
if (Key=$31) or (Key=VK_NUMPAD1) then
  SelItem(1);
if (Key=$32) or (Key=VK_NUMPAD2) then
  SelItem(2);
if (Key=$33) or (Key=VK_NUMPAD3) then
  SelItem(3);
if (Key=$34) or (Key=VK_NUMPAD4) then
  SelItem(4);
if (Key=$35) or (Key=VK_NUMPAD5) then
  SelItem(5);
if (Key=$36) or (Key=VK_NUMPAD6) then
  SelItem(6);
if (Key=$37) or (Key=VK_NUMPAD7) then
  SelItem(7);
if (Key=$38) or (Key=VK_NUMPAD8) then
  SelItem(8);
if (Key=72) then
  AgreeCurSel;
if (Key=70) then
    Close;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -