📄 doorperiods.pas
字号:
unit DoorPeriods;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, Mask, ExtCtrls;
type
TdlgDoorPeriods = class(TForm)
gbPeriods: TGroupBox;
edBegin: TMaskEdit;
Label1: TLabel;
gbWeeks: TGroupBox;
lbEnd: TLabel;
edEnd: TMaskEdit;
cbWeek1: TCheckBox;
cbWeek2: TCheckBox;
cbWeek3: TCheckBox;
cbWeek4: TCheckBox;
cbWeek5: TCheckBox;
cbWeek6: TCheckBox;
cbWeek7: TCheckBox;
gbDoors: TGroupBox;
cbDoor1: TCheckBox;
cbDoor2: TCheckBox;
cbDoor3: TCheckBox;
cbDoor4: TCheckBox;
Label3: TLabel;
cbLevel: TComboBox;
plBottom: TPanel;
btnOk: TButton;
btnCancel: TButton;
cbState: TComboBox;
lbState: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure edBeginExit(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
private
{ Private declarations }
public
{ Public declarations }
PeriodKind: Integer;
PassDoors: string;
end;
var
dlgDoorPeriods: TdlgDoorPeriods;
implementation
uses
Main;
{$R *.DFM}
procedure TdlgDoorPeriods.FormCreate(Sender: TObject);
var
i: Integer;
begin
cbLevel.ItemIndex:=0;
cbState.Items.Clear;
for i:=0 to High(arDoorStates) do
cbState.Items.Add(arDoorStates[i]);
cbState.ItemIndex:=0;
end;
procedure TdlgDoorPeriods.FormDestroy(Sender: TObject);
begin
dlgDoorPeriods:=nil;
end;
procedure TdlgDoorPeriods.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if ModalResult=mrOk then
begin
PassDoors:='';
if cbDoor1.Checked then PassDoors:=PassDoors+'1';
if cbDoor2.Checked then PassDoors:=PassDoors+'2';
if cbDoor3.Checked then PassDoors:=PassDoors+'3';
if cbDoor4.Checked then PassDoors:=PassDoors+'4';
end;
end;
procedure TdlgDoorPeriods.FormShow(Sender: TObject);
begin
if edBegin.CanFocus then edBegin.SetFocus;
cbDoor1.Checked:=Pos('1', PassDoors)<>0;
cbDoor2.Checked:=Pos('2', PassDoors)<>0;
cbDoor3.Checked:=Pos('3', PassDoors)<>0;
cbDoor4.Checked:=Pos('4', PassDoors)<>0;
case PeriodKind of
0, 7, 8:{授权时间段}
begin
lbState.Visible:=False;
cbState.Visible:=False;
lbEnd.Visible:=True;
edEnd.Visible:=True;
cbLevel.Enabled:=PeriodKind<>8;
cbLevel.Visible:=PeriodKind<>8;
Label3.Visible:=PeriodKind<>8;
if PeriodKind=8 then
begin
gbDoors.Visible:=True;
gbWeeks.Visible:=False;
Self.Height:=291-gbWeeks.Height;
end else if PeriodKind=0 then//平时
begin
gbDoors.Visible:=True;
gbWeeks.Visible:=True;
gbWeeks.Top:=152;
// Self.Height:=291-gbDoors.Height;
Self.Height:=291;
end else
begin //假日
gbDoors.Visible:=True;
gbWeeks.Visible:=False;
gbWeeks.Top:=80;
// Self.Height:=291-gbDoors.Height-gbWeeks.Height;
Self.Height:=291-gbWeeks.Height;
end;
end;
1..6:{设备状态}
begin
lbState.Visible:=True;
cbState.Visible:=True;
lbEnd.Visible:=False;
edEnd.Visible:=False;
cbLevel.Visible:=False;
Label3.Visible:=False;
cbLevel.ItemIndex:=0;
gbWeeks.Visible:=False;
gbDoors.Visible:=True;
gbDoors.Top:=80;
Self.Height:=291-gbWeeks.Height;
end;
end;
end;
procedure TdlgDoorPeriods.edBeginExit(Sender: TObject);
begin
if Sender is TMaskEdit then
with Sender as TMaskEdit do
begin
try
if Text<>'24:00' then
StrToTime(Text);
except
if CanFocus then SetFocus;
Raise;
end;
end;
end;
procedure TdlgDoorPeriods.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if ModalResult=mrOK then
try
if edBegin.Visible then edBeginExit(edBegin);
if edEnd.Visible then edBeginExit(edEnd);
except
CanClose:=False;
Raise
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -