📄 clockoptions.~pas
字号:
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 + -