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

📄 pyxg.~pas

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