📄 gxxz.~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 + -