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

📄 frmnewcards.pas

📁 IC卡饭堂售饭管理系统源码,内有相关说明,
💻 PAS
字号:
unit FrmNewCardS;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Grids, DBGrids, RXDBCtrl, TFlatEditUnit,
  TFlatSpinEditUnit, TFlatComboBoxUnit, TFlatButtonUnit,ICCTRL,inifiles;

type
  PClockInfo=^TClockInfo;
  TClockInfo=record
    ID: WORD;
    ClockNo: String;
    ClockName: String;
    Port: WORD;
    BaudRate: DWORD;
end;

type
  TFrmNewCard = class(TForm)
    GroupBox1: TGroupBox;
    RxDBGrid1: TRxDBGrid;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    FlatEdit1: TFlatEdit;
    Label2: TLabel;
    FlatComboBox1: TFlatComboBox;
    Label3: TLabel;
    Label4: TLabel;
    FlatSpinEditInteger2: TFlatSpinEditInteger;
    GroupBox3: TGroupBox;
    FlatButton1: TFlatButton;
    FlatButton2: TFlatButton;
    FlatButton3: TFlatButton;
    Label5: TLabel;
    FlatButton4: TFlatButton;
    FlatSpinEditInteger1: TFlatSpinEditFloat;
    procedure FlatButton2Click(Sender: TObject);
    procedure FlatButton3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FlatButton1Click(Sender: TObject);
    procedure FlatButton4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmNewCard: TFrmNewCard;

implementation

uses DTConnects, MainFRMS;

{$R *.dfm}
function IntToStrLen(Value : Integer; ResultLength :Byte):String;
begin
  Result:=IntToStr(Value);
  while Length(Result) < Resultlength do
    Result:='0'+Result;
  Result:=Copy(Result, Length(Result)-ResultLength+1, ResultLength);
end;

procedure TFrmNewCard.FlatButton2Click(Sender: TObject);
begin
  FlatEdit1.Text:='';
  FlatComboBox1.Text:='';
  FlatSpinEditInteger1.Value:=0;
  FlatSpinEditInteger2.Value:=0;
end;

procedure TFrmNewCard.FlatButton3Click(Sender: TObject);
begin
  self.Close;
end;

procedure TFrmNewCard.FormCreate(Sender: TObject);
var i:integer;
begin

  with DTConnect do begin
    qryuser.close;
    QryUser.SQL.Text:='Select UserName from [User] where ICCardNo ='+chr(39)+'00000'+chr(39);
    QryUser.Open;
    FlatComboBox1.Clear;
    QryUser.First;
    for i:=1 to QryUser.RecordCount do begin
      FlatComboBox1.Items.Add(QryUser.FieldValues['UserName']);
      QryUser.Next; 
    end;
    QryICCard.Close;
    QryICCard.SQL.Text:='Select ICCardNo,UserName,CreateTime from UserCard';
    QryICCard.Open;
  end;
end;

procedure TFrmNewCard.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  self.Release;
end;

procedure TFrmNewCard.FlatButton1Click(Sender: TObject);
var   hPort: THandle;
      pclk: PClockInfo;
      CardInfo: TCardInfo;
      ReadInfo: TIniFile;
      FileName:String;
      CardNoStr: String;
      Right:boolean;
      UserID:Integer;
begin
  FileName:=ExtractFilePath(Application.ExeName)+'CardInfo.ini';
  ReadInfo:=TIniFile.Create(FileName);
  if FlatEdit1.Text ='' then begin
    Application.MessageBox('请输入新IC卡的卡编号','操作提示',0+16);
    Abort;
  end;

  if FlatComboBox1.Text='' then begin
    Application.MessageBox('请选择开新IC卡的用户','操作提示',0+16);
    Abort;
  end;

  with DTConnect do begin
    qrycheck.Close;
    QryCheck.SQL.Text:='Select ID from ICCard where ICCardNo = '+chr(39)+FlatEdit1.Text+chr(39);
    QryCheck.Open;
    if QryCheck.RecordCount >0 then begin
      Application.MessageBox('已有相同编号的IC存在,请输入别的编号.','操作提示',0+16);
      Abort;
    end;
    QryUser.Close;
    QryUser.SQL.Text:='Select [ID] from [User] WHere [UserName] = '+chr(39)+FlatComboBox1.Text+chr(39);
    QryUser.Open;
    if QryUser.RecordCount>1 then begin
      Application.MessageBox('系统在搜索用户时找到两个同名的,请修改此用户名称后,再进行发新IC卡.在发完IC卡后你可重新将此用户改回原来的名字.在此造成不便,敬请见谅.','操作提示',0+48);
      Abort;
    end;
    UserID:=QryUser.FieldValues['ID'];
    QryUser.Close;
    CardInfo.CardNo:=StrToIntDef(FlatEdit1.Text, 0);
    CardInfo.Times:=StrToIntDef(inttostr(FlatSpinEditInteger2.Value), 0);
    CardInfo.Money:=Round(StrToFloat(floattostr(FlatSpinEditInteger1.value))*10);
    CardNoStr:=FlatComboBox1.SelText;
    StrPCopy(@CardInfo.Name[1],FlatComboBox1.Text);
    with ReadInfo do begin
      new(pclk);
      pclk.ID:=StrToIntDef(ReadString('NewCard','ID',''),1);
      pclk.ClockNo:=ReadString('NewCard','DeviceNo','');
      pclk.ClockName:=ReadString('NewCard','Devicena','');
      pclk.Port:=StrToIntDef(ReadString('NewCard','Port',''),4);
      pclk.BaudRate:= StrToIntDef(ReadString('NewCard','Speed','') , 9600);
    end;
    MainFRM.StatusBar1.Panels[0].Text:='链接到发卡机上...';
    hPort:=OpenCommPort(pclk.Port, pclk.BaudRate);
    Right:=WriteCardInfo(hPort, @CardInfo);
    MainFRM.StatusBar1.Panels[0].Text:='正在写入卡信息...';
    if Right then
      begin
        with DTConnect do begin
          ADOCommand1.CommandText:='Execute NewCard '+chr(39)+FlatEdit1.Text+chr(39)+','
                                    +inttostr(UserID)+','
                                    +inttostr(FlatSpinEditInteger1.Precision )+','
                                    +inttostr(FlatSpinEditInteger2.Value);
          ADOCommand1.Execute;
        end;
        Windows.Beep(2500, 150);
        Application.MessageBox('写卡号个人信息成功. ','操作提示',0+32);
        MainFRM.StatusBar1.Panels[0].Text:='写卡号个人信息成功.';
      end else
      begin
        Application.MessageBox('写卡号个人信息失败. ','操作提示',0+16);
        MainFRM.StatusBar1.Panels[0].Text:='写卡号个人信息失败.';
      end;
    CloseCommPort(hPort);
  end;
end;

procedure TFrmNewCard.FlatButton4Click(Sender: TObject);
var   hPort: THandle;
      pclk: PClockInfo;
      CardInfo: TCardInfo;
      ReadInfo: TIniFile;
      FileName:String;
      CardNoStr: String;
      Right:boolean;
      UserID:Integer;
begin
  FileName:=ExtractFilePath(Application.ExeName)+'CardInfo.ini';
  ReadInfo:=TIniFile.Create(FileName);
  with ReadInfo do begin
      new(pclk);
      pclk.ID:=StrToIntDef(ReadString('NewCard','ID',''),1);
      pclk.ClockNo:=ReadString('NewCard','DeviceNo','');
      pclk.ClockName:=ReadString('NewCard','Devicena','');
      pclk.Port:=StrToIntDef(ReadString('NewCard','Port',''),4);
      pclk.BaudRate:= StrToIntDef(ReadString('NewCard','Speed','') , 9600);
  end;
  MainFRM.StatusBar1.Panels[0].Text:='链接到发卡机上...';
  hPort:=OpenCommPort(pclk.Port, pclk.BaudRate);
  MainFRM.StatusBar1.Panels[0].Text:='正在读IC卡信息';
  Right:=ReadCardInfo(hPort, @CardInfo);
  if right then begin
    FlatEdit1.Text:=IntToStrLen(CardInfo.CardNo, 5);
    FlatComboBox1.Text:=PChar(@CardInfo.Name[1]);
    FlatSpinEditInteger1.Value:=CardInfo.Money/10;
    FlatSpinEditInteger2.Value:=CardInfo.Times;
    Application.MessageBox('读IC卡信息成功!','操作提示',0+32);
    MainFRM.StatusBar1.Panels[0].Text:='读IC卡信息成功!';
  end else begin
  MainFRM.StatusBar1.Panels[0].Text:='读IC卡信息失败!';
    Application.MessageBox('读IC卡信息失败!','操作提示',0+16);
  end;
  Windows.Beep(2500, 150);
  CloseCommPort(hPort);
end;

end.

⌨️ 快捷键说明

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