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

📄 main.~pas

📁 一个Delphi写的跟考勤机门禁机收款机的接品软件源码
💻 ~PAS
📖 第 1 页 / 共 5 页
字号:
unit Main;

interface

uses
  Windows, SysUtils, Classes, Graphics, Controls, Forms, Messages,
  EastRiver, GB2Big5, ShellApi, ShlObj, FileCtrl, IniFiles, ExtCtrls,
  Progress, StdCtrls, ComCtrls, Grids, Mask, CheckLst, Dialogs, Menus, Buttons,
  ImgList, PrjConst, XPMan;

const
  WM_READLIST=WM_USER+101;
  WM_READALLDATA=WM_USER+102;
  xorch=$555555;
  MYTRAY_MESSAGE=WM_USER+100;
  UniqueAppStr='EastRiver 980';
  arICID: array[0..2] of string=('D', 'C', ' ');
  arBoolean: array[Boolean]of char=('0', '1');
  arWeek: array[Boolean]of string=('', '*');
  arDoorStates: array[0..5]of string=(SAEOI, SAUAeEuG, SEuG, SAEuG, SAAE, SAAA);

type
  TControlAccess=class(TControl);

  PCardList=^TCardList;
  TCardList=record
    Cols: array[1..5] of string;
//    CardNo, EmpId, EmpName, Pwd, Periods: string;
    Auts: Integer;
    bNew: Boolean;
  end;

  TfrmMain=class(TForm)
    PageControl1: TPageControl;
    tsBaseOP: TTabSheet;
    tsClockList: TTabSheet;
    btnRead: TButton;
    btnGetTime: TButton;
    btnSetTime: TButton;
    btnSetAdmin: TButton;
    Panel1: TPanel;
    Label2: TLabel;
    btnSetPWD: TButton;
    tsFileSet: TTabSheet;
    Label3: TLabel;
    sbFile: TButton;
    tsLists: TTabSheet;
    btTime: TGroupBox;
    Timer: TTimer;
    msg: TLabel;
    tsRegCard: TTabSheet;
    Bevel8: TBevel;
    Label26: TLabel;
    lbRegCard: TListBox;
    btnRegAdd: TButton;
    btnRegDel: TButton;
    BitBtn3: TButton;
    BitBtn4: TButton;
    edFileName: TEdit;
    btnOpen: TSpeedButton;
    tsAbout: TTabSheet;
    lbBuild: TLabel;
    edFMTStr: TComboBox;
    edInspector: TStaticText;
    meTime1: TMaskEdit;
    Label6: TLabel;
    meTime2: TMaskEdit;
    Label7: TLabel;
    meTime3: TMaskEdit;
    Label21: TLabel;
    meTime4: TMaskEdit;
    Label22: TLabel;
    meTime5: TMaskEdit;
    Label27: TLabel;
    btnSetClockID: TButton;
    btnSetMark: TButton;
    Panel4: TPanel;
    GroupBox3: TGroupBox;
    Label28: TLabel;
    Label30: TLabel;
    Label31: TLabel;
    cbPort: TComboBox;
    cbRate: TComboBox;
    edClockID: TEdit;
    spAddClock: TButton;
    sbDelClock: TButton;
    sbSaveClock: TButton;
    btnClockMode: TButton;
    cbUseFMT: TCheckBox;
    btnSearchClock: TButton;
    clbDevs: TCheckListBox;
    OpenDlg: TOpenDialog;
    btnClearData: TButton;
    btnSearch: TButton;
    edClockType: TComboBox;
    Label47: TLabel;
    cbNotSaveDeviceList: TCheckBox;
    rgOnError: TRadioGroup;
    TrayPopMenu: TPopupMenu;
    popShowForm: TMenuItem;
    popExit: TMenuItem;
    btnMoneySum: TButton;
    pmClocks: TPopupMenu;
    miSelectAll: TMenuItem;
    miInvertSelect: TMenuItem;
    miCancelAllSelect: TMenuItem;
    cbICID: TCheckBox;
    lbVersion: TLabel;
    rbSave: TRadioGroup;
    edFireware: TComboBox;
    Label12: TLabel;
    lvClocks: TListView;
    ilImages: TImageList;
    cbCardStyle: TComboBox;
    Label10: TLabel;
    cbCmdVerify: TCheckBox;
    cbSynTime: TCheckBox;
    cbAutoClearClock: TCheckBox;
    XPManifest1: TXPManifest;
    plLists: TPanel;
    lvDeviceCards: TListView;
    Panel3: TPanel;
    btnClearDeviceList: TButton;
    btnReadDeviceCardList: TButton;
    btnWriteDeviceCardList: TButton;
    btnDeviceAdd: TButton;
    btnDeviceDelete: TButton;
    cbListKind: TComboBox;
    Label1: TLabel;
    cbUpdateAllDevice: TCheckBox;
    btnReadFile: TButton;
    btnWriteFile: TButton;
    SaveDlg: TSaveDialog;
    btnReadList: TButton;
    cbDispEmpId: TCheckBox;
    tsPriceList: TTabSheet;
    lvPriceList: TListView;
    Panel2: TPanel;
    Panel5: TPanel;
    tsConsumption: TTabSheet;
    GroupBox1: TGroupBox;
    gbFixPrice: TGroupBox;
    lbFixPrice: TLabel;
    edFixPrice: TEdit;
    btnSetFixPrice: TButton;
    lbDayMaxExpend: TLabel;
    edDayMaxExpend: TEdit;
    btnSetDayMaxExpend: TButton;
    lbDayMaxTimes: TLabel;
    edDayMaxTimes: TEdit;
    btnSetDayMaxTimes: TButton;
    btnEditPriceList: TButton;
    btnSetPriceList: TButton;
    pmLists: TPopupMenu;
    miSetSelectLists: TMenuItem;
    miSetAllLists: TMenuItem;
    cbTimeReceive: TCheckBox;
    tsPeriods: TTabSheet;
    Panel8: TPanel;
    btnAddPeriods: TButton;
    btnDeletePeriods: TButton;
    btnClearPeriods: TButton;
    btnWritePeriods: TButton;
    btnWritePeriodFile: TButton;
    btnReadPeriodFile: TButton;
    cbAutoSaveFile: TCheckBox;
    lvDoorPeriods: TListView;
    Panel10: TPanel;
    Label13: TLabel;
    cbPeriodKind: TComboBox;
    CheckBox1: TCheckBox;
    lbDeviceList: TLabel;
    miDownloadFromSel: TMenuItem;
    btnFindCard: TButton;
    lbCardForegift: TLabel;
    edCardForegift: TEdit;
    btnSetCardForegift: TButton;
    cbCmdVerifyFirst: TCheckBox;
    btnRealCollect: TButton;
    Label4: TLabel;
    cbxiazaiKind: TComboBox;
    Label5: TLabel;
    GroupBox2: TGroupBox;
    Label8: TLabel;
    Label9: TLabel;
    Label11: TLabel;
    Label14: TLabel;
    edDayCustom: TEdit;
    edNowCustom: TEdit;
    edCardMoney: TEdit;
    edUser: TEdit;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Label15: TLabel;
    Label17: TLabel;
    Label18: TLabel;
    Label16: TLabel;
    Label19: TLabel;
    Label20: TLabel;
    Label23: TLabel;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnGetTimeClick(Sender: TObject);
    procedure btnSetTimeClick(Sender: TObject);
    procedure btnReadClick(Sender: TObject);
    procedure btnSetAdminClick(Sender: TObject);
    procedure sbFileClick(Sender: TObject);
    procedure cbTimeReceiveClick(Sender: TObject);
    procedure btnClearDeviceListClick(Sender: TObject);
    procedure lbHomePageClick(Sender: TObject);
    procedure lbMailClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure btnOpenClick(Sender: TObject);
    procedure PageControl1Changing(Sender: TObject; var AllowChange: Boolean);
    procedure btnSetClockIDClick(Sender: TObject);
    procedure btnSetMarkClick(Sender: TObject);
    procedure spAddClockClick(Sender: TObject);
    procedure sbDelClockClick(Sender: TObject);
    procedure sbSaveClockClick(Sender: TObject);
    procedure btnSetPWDClick(Sender: TObject);
    procedure PageControl1Change(Sender: TObject);
    procedure meTime1Exit(Sender: TObject);
    procedure TimerTimer(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure lvClocksDeletion(Sender: TObject; Item: TListItem);
    procedure edInspectorDblClick(Sender: TObject);
    procedure cbListKindChange(Sender: TObject);
    procedure clbDevsEnter(Sender: TObject);
    procedure btnReadDeviceCardListClick(Sender: TObject);
    procedure btnDeviceAddClick(Sender: TObject);
    procedure btnDeviceDeleteClick(Sender: TObject);
    procedure btnClearDataClick(Sender: TObject);
    procedure lvDeviceCardsData(Sender: TObject; Item: TListItem);
    procedure lvDeviceCardsDataFind(Sender: TObject; Find: TItemFind;
      const FindString: string; const FindPosition: TPoint;
      FindData: Pointer; StartIndex: Integer; Direction: TSearchDirection;
      Wrap: Boolean; var Index: Integer);
    procedure btnSearchClick(Sender: TObject);
    procedure popShowFormClick(Sender: TObject);
    procedure popExitClick(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure btnMoneySumClick(Sender: TObject);
    procedure miSelectAllClick(Sender: TObject);
    procedure miInvertSelectClick(Sender: TObject);
    procedure miCancelAllSelectClick(Sender: TObject);
    procedure edClockTypeExit(Sender: TObject);
    procedure edClockTypeChange(Sender: TObject);
    procedure lvClocksSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure cbCardStyleChange(Sender: TObject);
    procedure lvDeviceCardsKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure btnReadFileClick(Sender: TObject);
    procedure btnWriteFileClick(Sender: TObject);
    procedure btnReadListClick(Sender: TObject);
    procedure edFixPriceKeyPress(Sender: TObject; var Key: Char);
    procedure edFixPriceExit(Sender: TObject);
    procedure edDayMaxTimesExit(Sender: TObject);
    procedure btnSetFixPriceClick(Sender: TObject);
    procedure btnWriteDeviceCardListClick(Sender: TObject);
    procedure miSetSelectListsClick(Sender: TObject);
    procedure lvPriceListSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure btnEditPriceListClick(Sender: TObject);
    procedure btnSetPriceListClick(Sender: TObject);
    procedure lvDeviceCardsDblClick(Sender: TObject);
    procedure cbPeriodKindChange(Sender: TObject);
    procedure btnReadPeriodFileClick(Sender: TObject);
    procedure btnWritePeriodFileClick(Sender: TObject);
    procedure btnAddPeriodsClick(Sender: TObject);
    procedure btnDeletePeriodsClick(Sender: TObject);
    procedure btnClearPeriodsClick(Sender: TObject);
    procedure btnWritePeriodsClick(Sender: TObject);
    procedure lvDoorPeriodsDblClick(Sender: TObject);
    procedure lvDoorPeriodsDeletion(Sender: TObject; Item: TListItem);
    procedure lvDoorPeriodsInsert(Sender: TObject; Item: TListItem);
    procedure lvDoorPeriodsSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure lvDeviceCardsInsert(Sender: TObject; Item: TListItem);
    procedure lvDeviceCardsDeletion(Sender: TObject; Item: TListItem);
    procedure lvDeviceCardsChange(Sender: TObject; Item: TListItem;
      Change: TItemChange);
    procedure miSetAllListsClick(Sender: TObject);
    procedure miDownloadFromSelClick(Sender: TObject);
    procedure lvDeviceCardsSelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    procedure lvDeviceCardsColumnClick(Sender: TObject;
      Column: TListColumn);
    procedure btnFindCardClick(Sender: TObject);
    procedure btnRealCollectClick(Sender: TObject);
    procedure cbUseFMTClick(Sender: TObject);
    procedure btnClockModeClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure btnSetDayMaxExpendClick(Sender: TObject);
    procedure btnSetDayMaxTimesClick(Sender: TObject);
    procedure btnSetCardForegiftClick(Sender: TObject);
    procedure edDayCustomKeyPress(Sender: TObject; var Key: Char);
    procedure edUserKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
//    hPort: THandle;
    pclk: PClockInfo;
    DeviceList: TList;
    {设备黑白名单列表}
    lstAllowCard, lstBlackCard, lstPassCard: array of TDownloadCardStruct;
    AllowCardNumber, BlackCardNumber, PassCardNumber: Integer;
    {设备黑白名单列表}
    FCurrentDir, Dir, FileName: string;
    bRuning: Boolean;
    FClocks: TList;
    {定时接收变量}
    FStarts: array[1..5] of Boolean;
    FStartDates: array[1..5] of TDateTime;
    {}
    {黑白名单及门禁文件名}
    FCurrentListFile: string;
    FDeviceListModified: Boolean;
    {}
    TrayIconData: TNotifyIconData;
    procedure MarkTaskBarIcon(Sender: TObject);
    procedure MyTrayMessage(var message: TMessage); message MyTRAY_MESSAGE;
    procedure ListViewData(Sender: TObject; Item: TListItem; List: TList);
    procedure ListViewDataFind(Sender: TObject; Find: TItemFind;
      const FindString: string; const FindPosition: TPoint; FindData: Pointer;
      StartIndex: Integer; Direction: TSearchDirection; Wrap: Boolean;
      var Index: Integer; List: TList);
    procedure OnActiveFormChange(Sender: TObject);
    procedure ADeactivate(Sender: TObject);
    procedure OnReadList(var message: TMessage); message WM_READLIST;
    procedure OnReadAllData(var message: TMessage); message WM_READALLDATA;
//    procedure WMGETCOUNT(var Msg: TMessage); message WM_USER+$100;    
  public
    { Public declarations }
    procedure ChooseDev;
    function OpenPort(pclk: PClockInfo): Boolean;
    procedure ClosePort(pclk: PClockInfo);
    procedure ReadData(pclk: PClockInfo; bFast: Boolean; MultiClock: Boolean);
    function GetFileName(FileName: string): string;
    procedure RefreshDeviceListCounter;
    function GetCurrentListFile: string;
    function GetStoredFileName(pclk: PClockInfo): string;
    function ReadListFile(const FileName: string; Listkind: Integer; silent: Boolean; bClear: Boolean=True): Boolean;
    function SaveListFile(const FileName: string; Listkind: Integer; silent: Boolean; kind: Integer): Boolean;
    //Kind=0: 所有, Kind=1: 排除选定, Kind=2; 清除
    function DownloadCardLists(Kind,XiazaiKind: Integer): Boolean;
    //下载列表中的卡号,Kind=0:所有,Kind=1,增加选中, Kind=2,从当前选择项开始继续下载

    property CurrentListFile: string read GetCurrentListFile write FCurrentListFile;
  end;

var
  frmMain: TfrmMain;
  dlgProgress: TdlgProgress;
  fIni: TIniFile;
  F, F2, FLog: TextFile;
  WorkDir: string;
  CommPorts: string;
  FDeviceSortAsc: Boolean;
  FDeviceSortIndex: Integer;

function ListSortCompare(Item1, Item2: Pointer): Integer;
procedure WaitProc(p: Pointer; dwMilliseconds: Integer);stdcall;
function DataProgressProc(p: Pointer; lpReadData: P690ReadData): Boolean;stdcall;


const
  fulen=32;


implementation

uses CardNo, ChDevPwd, GateCard, Hints, SearchPort, ClockOptions,
  Holiday, RealControl, Functions, ListCard, DoorPeriods, SuperUserDialog,
  FindListItem;

{$R *.DFM}

procedure WaitProc(p: Pointer; dwMilliseconds: Integer);
begin

⌨️ 快捷键说明

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