📄 pyxg.~pas
字号:
unit PYXG;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
jpeg, ExtCtrls, StdCtrls;
type
TPYXGForm = class(TForm)
Image1: TImage;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
Label25: TLabel;
Label26: TLabel;
PYLabel: TLabel;
DeleteLabel: TLabel;
PageUpLabel: TLabel;
PageDownLabel: TLabel;
ReturnLabel: TLabel;
PageLabel: TLabel;
GQMC1: TLabel;
GXXM1: TLabel;
GQMC2: TLabel;
GQMC4: TLabel;
GQMC3: TLabel;
GQMC5: TLabel;
GXXM2: TLabel;
GXXM4: TLabel;
GXXM3: TLabel;
GXXM5: TLabel;
ClickLabel1: TLabel;
ClickLabel2: TLabel;
ClickLabel3: TLabel;
ClickLabel4: TLabel;
ClickLabel5: TLabel;
SelectedImage: TImage;
procedure Label1Click(Sender: TObject);
procedure DeleteLabelClick(Sender: TObject);
procedure ReturnLabelClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormShow(Sender: TObject);
procedure PageUpLabelClick(Sender: TObject);
procedure PageDownLabelClick(Sender: TObject);
procedure ClickLabel1Click(Sender: TObject);
private
RecordCount:Integer;
CurPage:Integer;
PageCount:Integer;
CurItem:Integer;
GQMCLabel:Array[0..4] of TLabel;
GXXMLabel:Array[0..4] of TLabel;
ClickLabel:Array[0..4] of TLabel;
MidString:String;
KeyCharList:TStringList;
procedure RefreshDisplay;
procedure DrawPage(PageNum:Integer);
procedure SelectItem(ItemIndex:Integer);
procedure NextPage;
procedure PriorPage;
procedure NextItem;
procedure PriorItem;
procedure AgreeCurSel;
procedure AddToCurMusic;
{ Private declarations }
public
procedure RefreshCur;
{ Public declarations }
end;
var
PYXGForm: TPYXGForm;
implementation
uses Data, DBMain, Main, DBGQ, CurMusic;
{$R *.DFM}
procedure TPYXGForm.RefreshCur;
begin
DrawPage(CurPage);
end;
procedure TPYXGForm.AddToCurMusic;
var
TempString:String;
CurIndex:Integer;
begin
CurMusicForm.Add;
CurIndex := CurMusicForm.CurList.Items.Count-1;
CurMusicForm.CurList.Items[CurIndex].Caption := DataMod.GQKDataSet.FieldByName('GQMC').AsString;
CurMusicForm.SetValue(CurIndex,C_JMLB,'M');
CurMusicForm.SetValue(CurIndex,C_JMBH,DataMod.GQKDataSet.FieldByName('GQBH').AsString);
CurMusicForm.SetValue(CurIndex,C_JMLJ,DataMod.GQKDataSet.FieldByName('CPLJ').AsString);
CurMusicForm.SetValue(CurIndex,C_JMZL,DataMod.GQKDataSet.FieldByName('GQZL').AsString);
CurMusicForm.SetValue(CurIndex,C_DPMC,DataMod.GQKDataSet.FieldByName('DPMC').AsString);
CurMusicForm.SetValue(CurIndex,C_BCSD,DataMod.GQKDataSet.FieldByName('BCSD').AsString);
CurMusicForm.SetValue(CurIndex,C_YCSD,DataMod.GQKDataSet.FieldByName('YCSD').AsString);
CurMusicForm.SetValue(CurIndex,C_YL,DataMod.GQKDataSet.FieldByName('YL').AsString);
CurMusicForm.RefreshSM;
if CurMusicForm.CurList.Items.Count=1 then
begin
DBMainForm.RealMagic.Stop;
end
else
begin
TempString:=DBMainForm.StatusLabel.Caption;
DBMainForm.StatusLabel.Font.Color:=clGreen;
DBMainForm.StatusLabel.Caption:=CurMusicForm.GetValue(CurIndex,C_SM)+':'+CurMusicForm.CurList.Items[CurIndex].Caption;
Application.ProcessMessages;
Sleep(2000);
DBMainForm.StatusLabel.Font.Color:=clYellow;
DBMainForm.StatusLabel.Caption:=TempString;
end;
GQMCLabel[CurItem].Caption:=GQMCLabel[CurItem].Caption+'('+CurMusicForm.GetValue(CurIndex,C_SM)+')';
end;
procedure TPYXGForm.AgreeCurSel;
begin
SelectItem(CurItem);
if (GQMCLabel[CurItem].Font.Color<>clRed) and (GQMCLabel[CurItem].Caption<>'') then
begin
GQMCLabel[CurItem].Font.Color:=clRed;
GXXMLabel[CurItem].Font.Color:=clRed;
DataMod.GQKDataSet.First;
DataMod.GQKDataSet.MoveBy(CurPage*5+CurItem);
AddToCurMusic;
PYLabel.Caption:='';
RefreshDisplay;
end;
end;
procedure TPYXGForm.NextPage;
begin
if CurPage<PageCount-1 then
begin
CurPage:=CurPage+1;
DrawPage(CurPage);
SelectItem(0);
end;
end;
procedure TPYXGForm.PriorPage;
begin
if CurPage>0 then
begin
CurPage:=CurPage-1;
DrawPage(CurPage);
SelectItem(0);
end;
end;
procedure TPYXGForm.NextItem;
begin
if CurItem<4 then
begin
if (CurPage=PageCount-1) and (CurItem>=RecordCount mod 5 -1) then
SelectItem(0)
else
SelectItem(CurItem+1)
end
else
SelectItem(0);
end;
procedure TPYXGForm.PriorItem;
begin
if CurItem>0 then
SelectItem(CurItem-1)
else
begin
if CurPage=PageCount-1 then
SelectItem(RecordCount mod 5 -1)
else
SelectItem(4);
end;
end;
procedure TPYXGForm.DrawPage(PageNum:Integer);
var
CurIndex,i:Integer;
BHField:String;
begin
CurPage:=PageNum;
if PageCount=0 then
PageLabel.Caption:='0/0'
else
PageLabel.Caption:=IntToStr(PageNum+1)+'/'+IntToStr(PageCount);
DataMod.GQKDataSet.First;
DataMod.GQKDataSet.MoveBy(PageNum*5);
For i:=0 to 4 do
begin
GQMCLabel[i].Font.Color:=clBlack;
GXXMLabel[i].Font.Color:=clBlack;
end;
For i:=0 to 4 do
begin
if not DataMod.GQKDataSet.Eof then
begin
GQMCLabel[i].Caption:=DataMod.GQKDataSet.FieldByName('GQMC').AsString;
if DataMod.GQKDataSet.FieldByName('SFDCHC').AsString='F' then
GXXMLabel[i].Caption:=DataMod.GQKDataSet.FieldByName('GXXM').AsString
else
GXXMLabel[i].Caption:=DataMod.GQKDataSet.FieldByName('GXXM').AsString+' '+DataMod.GQKDataSet.FieldByName('GXXM1').AsString;
if Length(GXXMLabel[i].Caption)>9 then
begin
GXXMLabel[i].Font.Size:=round(24*(9 / Length(GXXMLabel[i].Caption)));
GXXMLabel[i].Top:=22+i*52+round((33-GXXMLabel[i].Canvas.TextHeight('字'))/2);
end
else
begin
GXXMLabel[i].Font.Size:=24;
GXXMLabel[i].Top:=22+i*52;
end;
CurIndex := CurMusicForm.FindItem(C_JMBH,DataMod.GQKDataSet.FieldByName('GQBH').AsString);
if CurIndex >= 0 then
begin
GQMCLabel[i].Caption:=GQMCLabel[i].Caption+'('+CurMusicForm.GetValue(CurIndex,C_SM)+')';
GQMCLabel[i].Font.Color:=clRed;
GXXMLabel[i].Font.Color:=clRed;
end
end
else
begin
GQMCLabel[i].Caption:='';
GXXMLabel[i].Caption:='';
end;
DataMod.GQKDataSet.Next;
end
end;
procedure TPYXGForm.SelectItem(ItemIndex:Integer);
begin
if GQMCLabel[ItemIndex].Caption<>'' then
begin
CurItem:=ItemIndex;
SelectedImage.Top:=22+CurItem*52+33;
end;
end;
procedure TPYXGForm.RefreshDisplay;
begin
DataMod.GQKDataSet.Close;
if PYLabel.Caption<>'' then
DataMod.GQKDataSet.SQL.Text:='select * from GQK where GMPY like '''+PYLabel.Caption+'%'' order by gmpy,gqzs'
else
// DataMod.GQKDataSet.SQL.Text:='select * from GQK order by gmpy,gqzs';
DataMod.GQKDataSet.SQL.Text:='select * from GQK where gqbh=-1';
DataMod.GQKDataSet.Open;
DataMod.GQKDataSet.Last;
RecordCount:=DataMod.GQKDataSet.RecordCount;
if DataMod.GQKDataSet.RecordCount mod 5 =0 then
PageCount:=DataMod.GQKDataSet.RecordCount div 5
else
PageCount:=DataMod.GQKDataSet.RecordCount div 5 + 1;
DrawPage(0);
SelectItem(0);
end;
procedure TPYXGForm.Label1Click(Sender: TObject);
begin
PYLabel.Caption:=PYLabel.Caption+CHR(65+TLabel(Sender).Tag);
RefreshDisplay;
end;
procedure TPYXGForm.DeleteLabelClick(Sender: TObject);
begin
PYLabel.Caption:=Copy(PYLabel.Caption,1,Length(PYLabel.Caption)-1);
RefreshDisplay;
end;
procedure TPYXGForm.ReturnLabelClick(Sender: TObject);
begin
Close;
end;
procedure TPYXGForm.FormCreate(Sender: TObject);
begin
KeyCharList:=TStringList.Create;
KeyCharList.Add('00=A');
KeyCharList.Add('06=B');
KeyCharList.Add('07=C');
KeyCharList.Add('08=D');
KeyCharList.Add('09=E');
KeyCharList.Add('60=F');
KeyCharList.Add('66=G');
KeyCharList.Add('67=H');
KeyCharList.Add('68=I');
KeyCharList.Add('69=J');
KeyCharList.Add('70=K');
KeyCharList.Add('76=L');
KeyCharList.Add('77=M');
KeyCharList.Add('78=N');
KeyCharList.Add('79=O');
KeyCharList.Add('80=P');
KeyCharList.Add('86=Q');
KeyCharList.Add('87=R');
KeyCharList.Add('88=S');
KeyCharList.Add('89=T');
KeyCharList.Add('90=V');
KeyCharList.Add('96=W');
KeyCharList.Add('97=X');
KeyCharList.Add('98=Y');
KeyCharList.Add('99=Z');
MidString:='';
Left:=0;
Top:=0;
end;
procedure TPYXGForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
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=72) or (Key=13) then
AgreeCurSel;
if (Key=70) then
Close;
if (Key=69) then
DeleteLabel.OnClick(DeleteLabel);
if (Key in [$30,$36..$39]) then
begin
MidString:=MidString+CHR(Key);
if Length(MidString)=2 then
begin
PYLabel.Caption:=PYLabel.Caption+KeyCharList.Values[MidString];
RefreshDisplay;
MidString:='';
end;
end;
if (Key=$31) or (Key=VK_NUMPAD1) then
begin
SelectItem(0);
AgreeCurSel;
end;
if (Key=$32) or (Key=VK_NUMPAD2) then
begin
SelectItem(1);
AgreeCurSel;
end;
if (Key=$33) or (Key=VK_NUMPAD3) then
begin
SelectItem(2);
AgreeCurSel;
end;
if (Key=$34) or (Key=VK_NUMPAD4) then
begin
SelectItem(3);
AgreeCurSel;
end;
if (Key=$35) or (Key=VK_NUMPAD5) then
begin
SelectItem(4);
AgreeCurSel;
end;
end;
procedure TPYXGForm.FormShow(Sender: TObject);
begin
GQMCLabel[0]:=GQMC1;
GQMCLabel[1]:=GQMC2;
GQMCLabel[2]:=GQMC3;
GQMCLabel[3]:=GQMC4;
GQMCLabel[4]:=GQMC5;
GXXMLabel[0]:=GXXM1;
GXXMLabel[1]:=GXXM2;
GXXMLabel[2]:=GXXM3;
GXXMLabel[3]:=GXXM4;
GXXMLabel[4]:=GXXM5;
ClickLabel[0]:=ClickLabel1;
ClickLabel[1]:=ClickLabel2;
ClickLabel[2]:=ClickLabel3;
ClickLabel[3]:=ClickLabel4;
ClickLabel[4]:=ClickLabel5;
RefreshDisplay;
end;
procedure TPYXGForm.PageUpLabelClick(Sender: TObject);
begin
PriorPage;
end;
procedure TPYXGForm.PageDownLabelClick(Sender: TObject);
begin
NextPage;
end;
procedure TPYXGForm.ClickLabel1Click(Sender: TObject);
begin
SelectItem(TLabel(Sender).Tag-1);
AgreeCurSel;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -