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

📄 clockoptions.~pas

📁 一个Delphi写的跟考勤机门禁机收款机的接品软件源码
💻 ~PAS
📖 第 1 页 / 共 3 页
字号:
        DecodeTime(dlgRingTime.edRingTime.Time, hour, min, sec, msec);
        Duration:=StrToIntDef(dlgRingTime.meDuration.Text, 0);
        if SetRing(pclk.hPort, hour, min, sec, Duration) then
        begin
          msg.Caption:=SOK;
          with lvRingTime.Items.Add do
          begin
            Caption:=format('%.2u', [Hour]);
            SubItems.Add(format('%.2u', [Min]));
            SubItems.Add(format('%.2u', [Sec]));
            SubItems.Add(format('%.2u', [Duration]));
          end;
          lvRingTime.AlphaSort;
        end else
          msg.Caption:=SERROR;
        Windows.Beep(2500, 100);
      end;
    end;
  end;
end;

procedure TdlgOptions.sbReWriteRingTimeClick(Sender: TObject);
var
  i, Duration: Integer;
  Hour, Min, Sec: WORD;
begin
  with lvRingTime do
  begin
    begin
      if ClearRing(pclk.hPort) then
      begin
        for i:=0 to Items.Count-1 do
        begin
          Hour:=StrToInt(Items[i].Caption);
          Min:=StrToInt(Items[i].SubItems[0]);
          Sec:=StrToInt(Items[i].SubItems[1]);
          Duration:=StrToInt(Items[i].SubItems[2]);
          if SetRing(pclk.hPort, hour, min, sec, Duration) then
          begin
            msg.Caption:=SOK;
          end else
            msg.Caption:=SERROR;
        end;
        SaveRingTimes;
        msg.Caption:=SOAaEAGEeIeE;
      end else
      begin
        msg.Caption:=SCaYOAaEAIIo;
      end;
      Windows.Beep(2500, 100);
    end;
  end;
end;

procedure TdlgOptions.sbReWriteClockTimeClick(Sender: TObject);
var
  i: Integer;
  StartTime, EndTime: String;
begin
  with lvClockTime do
  begin
    begin
      if SetWholeTimeClock(pclk.hPort) then
      begin
        for i:=0 to Items.Count-1 do
        begin
          Starttime:=Items[i].Caption;
          Endtime:=Items[i].SubItems[0];
          if SetClockerTime(pclk.hPort, PChar(StartTime), PChar(EndTime)) then
          begin
            cbUseClockTime.Checked:=True;
            msg.Caption:=SOK;
          end else
            msg.Caption:=SERROR;
        end;
        SaveClockerTimes;
        msg.Caption:=SCUEIGEeIeE;
        Windows.Beep(2500, 100);
      end else
      begin
        msg.Caption:=SEeOAEIiCUIIo;
      end;
    end;
  end;
end;

procedure TdlgOptions.rbOneManyClick(Sender: TObject);
begin
  if rbOneMany.Checked then cbGroupStation.ItemIndex:=6 else cbGroupStation.ItemIndex:=16;
  meLockTimeChange(Sender);
end;

procedure TdlgOptions.rbManyManyClick(Sender: TObject);
begin
  if rbManyMany.Checked then cbGroupStation.ItemIndex:=16 else cbGroupStation.ItemIndex:=6;
  meLockTimeChange(Sender);
end;

procedure TdlgOptions.cbGroupStationChange(Sender: TObject);
begin
  rbManyMany.Checked:=cbGroupStation.ItemIndex=16;
  rbOneMany.Checked:=not rbManyMany.Checked;
  meLockTimeChange(Sender);
end;

procedure TdlgOptions.cbA0Click(Sender: TObject);
begin
  if tsClockMode.Tag=0 then tsClockMode.Tag:=1;
end;

procedure TdlgOptions.meLockTimeChange(Sender: TObject);
begin
  if tsClockMode.Tag=0 then tsClockMode.Tag:=1;
end;

procedure TdlgOptions.edRWTimeOutExit(Sender: TObject);
begin
//  StrToInt(edRWTimeOut.Text);
end;

procedure TdlgOptions.FormCreate(Sender: TObject);
  procedure AssignEditControl(Src, Dest: TEdit);
  begin
    Dest.Left:=Src.Left;
    Dest.Top:=Src.Top;
    Dest.Parent:=Src.Parent;
    Dest.Width:=Src.Width;
    Dest.Height:=Src.Height;
    Dest.Text:=Src.Text;
    Dest.TabOrder:=Src.TabOrder;
    Dest.MaxLength:=Src.MaxLength;
    Dest.OnChange:=Src.OnChange;
    Dest.OnKeyPress:=Src.OnKeyPress;
    Dest.Tag:=Src.Tag;
  end;
var
  Edit: TEditEx;
begin
  New(pclk);
  FillChar(pclk^, SizeOf(TClockInfo), 0);
  FontStream:=TMemoryStream.Create;
  cbCardType.ItemIndex:=0;
  cbGroupStation.ItemIndex:=6;
  PageControl2.ActivePageIndex:=0;
  cbSector.ItemIndex:=0;
  cbPassword.ItemIndex:=0;

  Edit:=TEditEx.Create(Self);
  Edit.Alignment:=taCenter;
  AssignEditControl(edFirstWinMsg, Edit);
  edFirstWinMsg.Free;
  edFirstWinMsg:=Edit;

  Edit:=TEditEx.Create(Self);
  Edit.Alignment:=taCenter;
  AssignEditControl(edNormalMsg, Edit);
  edNormalMsg.Free;
  edNormalMsg:=Edit;

  Edit:=TEditEx.Create(Self);
  Edit.Alignment:=taCenter;
  AssignEditControl(edBrushMsg, Edit);
  edBrushMsg.Free;
  edBrushMsg:=Edit;
  cbCardTypeChange(Sender);
end;

procedure TdlgOptions.FormDestroy(Sender: TObject);
begin
  Dispose(pclk);
  FreeAndNil(FontStream);
end;

procedure TdlgOptions.cbFontLibChange(Sender: TObject);
begin
  case cbFontLib.ItemIndex of
    0: FontFileName:=JFFileName;
    1: FontFileName:=FFFileName;
  end;
  FontStream.LoadFromFile(FontFileName);
end;

procedure TdlgOptions.cbCardTypeChange(Sender: TObject);
var
  i, y: Integer;
begin
  case cbCardType.ItemIndex of
    -1,0:{Mifare I}
      begin
        cbSector.Items.Clear;
        for i:=0 to 15 do
          for y:=0 to 2 do
          begin
            if (i=0) and (y=0) then Continue;
            cbSector.Items.Add(format(Mf1Sectors, [i, y]));
          end;
       cbSector.ItemIndex:=1;
      end;
    1:{Mifare Line}
      begin
        cbSector.Items.Text:=MflSectors;
         cbSector.ItemIndex:=0;
      end;
  end;
end;

procedure TdlgOptions.PageControl2Changing(Sender: TObject;
  var AllowChange: Boolean);
var
  i: Integer;
  d: Double;
  R: Boolean;
  S: string;
  buff: array[0..19]of char;
  SaveCursor: TCursor;
begin
  if (not ReadedExtProp) then
  with pclk^ do
  begin
    if not Assigned(dlgHints) then dlgHints:=TdlgHints.Create(Self);
    dlgHints.msg.Caption:=SOyOUAEEeOA;
    dlgHints.Show;
    dlgHints.Update;
    SaveCursor:=Screen.Cursor;
    Screen.Cursor:=crHourGlass;
    try
      msg.Caption:='';
      
      //自定义卡号长度
      R:=ReadCardLength(hPort, DispCardLen, CardLen);
      edDisplen.Text:=IntToStr(dispCardLen);
      edDataLen.Text:=IntToStr(CardLen);
      SetGroupControlState(gbCardLen, R);

      //当前IC卡块
      R:=ReadClientCode(hPort, Block);
      if R then
      begin
        cbPassword.ItemIndex := (block and $40)shr 6;
        block := (block and $3F);
        if block>3 then
          cbSector.ItemIndex := (block div 4)*3-1+(block mod 4)
        else
          cbSector.ItemIndex := block - 1;
      end;
      SetGroupControlState(gbSaveBlock, R);

      //刷卡间隔
      R:=ReadCardTimeInterval(hPort, d);
      lbBrushSpace1.Enabled:=R;
      lbBrushSpace2.Enabled:=R;
      edBrushSpace.Enabled:=R;
      if R then
        edBrushSpace.Text:=FloatToStr(d);

      //重复刷卡间隔
      R:=ReadRepeatClockerTime(hPort, i);
      lbRepeatSpace1.Enabled:=R;
      lbRepeatSpace2.Enabled:=R;
      edRepeatSpace.Enabled:=R;
      sbAddClockTime.Enabled:=R;
      sbDelClockTime.Enabled:=R;
      sbReWriteClockTime.Enabled:=R;
      if R then
        edRepeatSpace.Text:=FloatToStr(i);

      //刷卡时段
      R:=GetClockSupports(hPort, fiBrushPeriods);
      sbAddRingTime.Enabled:=R;
      sbDelRingTime.Enabled:=R;
      sbReWriteRingTime.Enabled:=R;
      SetGroupControlState(gbBrushPeriods, R);
      if R then
        ReadClockerTimes;

      //打铃时间
      R:=GetClockSupports(hPort, fiRingTime);
      SetGroupControlState(gbRingTimes, R);
      if R then
        ReadRingTimes;

      //打卡分组功能
      R:=ReadGroupByteStation(hPort, GroupStation);
      cbGroupStation.ItemIndex:=GroupStation;
      cbGroupStationChange(Sender);
      SetGroupControlState(gbGroupCheck, R);
      if R then
      begin
        SetLength(S, 1000);
        if ReadGroupByteChecks(hPort, PChar(S), Length(S)) then
        begin
          edGroup.Text:=PChar(S);
        end else
        begin
          edGroup.Text:=Fini.ReadString(format(SGroupCheckSec, [Port, clock_id]), 'GroupChecks', '');
//          edGroup.Text:='';
          msg.Caption:=msg.Caption+SAOeEU;
        end;
      end;

      if ReadFirstWindowDispString(hPort, @buff) then
      begin
        edFirstWinMsg.Text:=PChar(@buff);
      end else
        edFirstWinMsg.Text:=FIni.ReadString(SetSec, SFirstWinMsg, edFirstWinMsg.Text);

      if ReadClockNormalMessage(hPort, @buff) then
      begin
        edNormalMsg.Text:=PChar(@buff);
      end else
        edNormalMsg.Text:=FIni.ReadString(SetSec, SNormalMsg, edNormalMsg.Text);


      if ReadClockWelcomeMessage(hPort, @buff) then
      begin
        edBrushMsg.Text:=PChar(@buff);
      end else
        edBrushMsg.Text:=FIni.ReadString(SetSec, SBrushMsg, edBrushMsg.Text);

      ReadedExtProp:=True;
      if msg.Caption='' then msg.Caption:=SAEuOGEeOAE;
    finally
      dlgHints.Close;
      Screen.Cursor:=SaveCursor;
    end;
  end;
end;

procedure TdlgOptions.sbDelRingTimeClick(Sender: TObject);
var
  i: Integer;
begin
  if (lvRingTime.SelCount>0) and
    (MessageBox(Screen.ActiveForm.Handle, PChar(SECNEYNOGAOAaEA), PChar(SAE1), MB_YESNO or MB_ICONQUESTION)=IDYES) then
    for i:=lvRingTime.Items.Count-1 downto 0 do
      if lvRingTime.Items[i].Selected then
      begin
        lvRingTime.Items.Delete(i);
      end;
end;

procedure TdlgOptions.cbA450Click(Sender: TObject);
begin
  cbA0Click(Sender);
end;

procedure TdlgOptions.cbUseRingTimeClick(Sender: TObject);
begin
  cbA0Click(Sender);
end;

procedure TdlgOptions.edRepeatSpaceExit(Sender: TObject);
begin
  if edRepeatSpace.Modified and (edRepeatSpace.Text<>'0') then
    cbA6.Checked:=True;
end;

procedure TdlgOptions.btnSendMsgClick(Sender: TObject);
var
  R: Boolean;
  i: Integer;
  S: string;
begin
  if pclk.VerOrd>2 then
  begin
    R := SetNotification(pclk.hPort, PChar(TransToGB(edNotification.Lines.Text)), StrToInt(edShowTime.Text), cbWordWrap.Checked);
  end
  else
    for i := 0 to 3 do
    begin
      if i<=edNotification.Lines.Count-1 then
        S := edNotification.Lines[i]
      else
        S:='';
      R := ShowClockMessage(pclk.hPort, PChar(TransToGB(S)), chbCLS.Checked and(i=0), i+1, StrToIntDef(edShowTime.Text, 0));
      if not R then Break;
    end;
  if R then
  begin
    msg.Caption := SOK;
  end
  else
  begin
    msg.Caption := SERROR;
  end;
end;

procedure TdlgOptions.chbCLSClick(Sender: TObject);
begin
  edNotification.WordWrap:=cbWordWrap.Checked;
end;

procedure TdlgOptions.edFirstWinMsgKeyPress(Sender: TObject;
  var Key: Char);
begin
  edFirstWinMsg.Tag:=1;
  if tsClockMode.Tag=0 then tsClockMode.Tag:=1;
end;

procedure TdlgOptions.edNormalMsgKeyPress(Sender: TObject; var Key: Char);
begin
  edNormalMsg.Tag:=1;
  if tsClockMode.Tag=0 then tsClockMode.Tag:=1;
end;

procedure TdlgOptions.edBrushMsgKeyPress(Sender: TObject; var Key: Char);
begin
  edBrushMsg.Tag:=1;
  if tsClockMode.Tag=0 then tsClockMode.Tag:=1;
end;

end.

⌨️ 快捷键说明

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