📄 configfrm.pas
字号:
unit ConfigFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ExtCtrls, Mask, ToolEdit, CurrEdit, Grids,
ValEdit, LingXiFrame, Spin, DateUtils;
type
TfrmConfig = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
GroupBox1: TGroupBox;
Image1: TImage;
Label1: TLabel;
CurrencyEdit1: TCurrencyEdit;
Label2: TLabel;
Label3: TLabel;
CurrencyEdit2: TCurrencyEdit;
Label4: TLabel;
Label5: TLabel;
CurrencyEdit3: TCurrencyEdit;
Label6: TLabel;
Label7: TLabel;
gbYHSD: TGroupBox;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
DateTimePicker3: TDateTimePicker;
DateTimePicker4: TDateTimePicker;
DateTimePicker5: TDateTimePicker;
DateTimePicker6: TDateTimePicker;
DateTimePicker7: TDateTimePicker;
DateTimePicker8: TDateTimePicker;
edtYhMoney1: TCurrencyEdit;
edtYhMoney2: TCurrencyEdit;
edtYhMoney3: TCurrencyEdit;
edtYhMoney4: TCurrencyEdit;
ComboBox1: TComboBox;
btnOK: TButton;
btnCancel: TButton;
Frame11: TFrame1;
Bevel1: TBevel;
DateTimePicker9: TDateTimePicker;
DateTimePicker10: TDateTimePicker;
edtYhMoney5: TCurrencyEdit;
Label8: TLabel;
Image2: TImage;
cbYHSD: TCheckBox;
GroupBox2: TGroupBox;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
TabSheet3: TTabSheet;
Image3: TImage;
Label9: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
GroupBox3: TGroupBox;
Label16: TLabel;
seYHL: TSpinEdit;
GroupBox4: TGroupBox;
CheckBox5: TCheckBox;
rgJsByDate: TRadioGroup;
CheckBox4: TCheckBox;
procedure cbYHSDClick(Sender: TObject);
procedure btnOKClick(Sender: TObject);
private
{ Private declarations }
function CheckRepeatTime: Boolean; //检查交叠的优惠时段
function CheckRepeatSect(CheckTimeIndex, BeginTimeSectIndex: Integer): Boolean; //检查完全一样的时段
function InTimeSect(CheckedTimeIndex, BeginTimeIndex: Integer): Boolean;
function InTwoDay(ABeginTime, AEndTime: TDateTime): Boolean;
function Check0TimeSect(CheckTimeIndex: Integer): Boolean;
procedure GetTime;
public
{ Public declarations }
procedure SetYHSTstate(AState: Boolean);
procedure SetData;
procedure GetData;
end;
var
frmConfig: TfrmConfig;
YouHuiTime: array[1..10] of Double;
implementation
uses Bar;
{$R *.dfm}
procedure TfrmConfig.SetYHSTstate(AState: Boolean);
var
I: Integer;
begin
for I := 0 to frmConfig.ComponentCount - 1 do
begin
if (frmConfig.Components[I] is TControl) then
if ((frmConfig.Components[I] as TControl).Parent = gbYHSD) then
begin
if ((frmConfig.Components[I] as TControl) <> cbYHSD) then
(frmConfig.Components[i] as TControl).Enabled := AState;
end;
end;
end;
procedure TfrmConfig.cbYHSDClick(Sender: TObject);
begin
if cbYHSD.Checked then
SetYHSTstate(True)
else
SetYHSTstate(False);
end;
procedure TfrmConfig.GetData;
begin
//page1
ZDSF := CurrencyEdit1.Value;
FeiLu := CurrencyEdit2.Value;
ZXDW := CurrencyEdit3.Value;
YECL := ComboBox1.ItemIndex; //余额处理
EnableYHSD := cbYHSD.Checked;
YouHui[1] := TimeOf(DateTimePicker1.Time);
YouHui[2] := TimeOf(DateTimePicker2.Time);
YouHui[3] := TimeOf(DateTimePicker3.Time);
YouHui[4] := TimeOf(DateTimePicker4.Time);
YouHui[5] := TimeOf(DateTimePicker5.Time);
YouHui[6] := TimeOf(DateTimePicker6.Time);
YouHui[7] := TimeOf(DateTimePicker7.Time);
YouHui[8] := TimeOf(DateTimePicker8.Time);
YouHui[9] := TimeOf(DateTimePicker9.Time);
YouHui[10] := TimeOf(DateTimePicker10.Time);
YouHui[11] := edtYhMoney1.Value;
YouHui[12] := edtYhMoney2.Value;
YouHui[13] := edtYhMoney3.Value;
YouHui[14] := edtYhMoney4.Value;
YouHui[15] := edtYhMoney5.Value;
//page2
HY_PTSD := CheckBox1.Checked;
HY_YHSD := CheckBox2.Checked;
HY_TX := CheckBox3.Checked;
//HY_TZ := CheckBox4.Checked;
YHL := seYHL.Value;
//page3
AutoClear := CheckBox5.Checked;
AddHyMoney := CheckBox4.Checked;
JsByDate := rgJsByDate.ItemIndex;
end;
procedure TfrmConfig.SetData;
begin
//page1
CurrencyEdit1.Value := ZDSF;
CurrencyEdit2.Value := FeiLu;
CurrencyEdit3.Value := ZXDW;
ComboBox1.ItemIndex := YECL; //余额处理
cbYHSD.Checked := EnableYHSD;
DateTimePicker1.Time := YouHui[1];
DateTimePicker2.Time := YouHui[2];
DateTimePicker3.Time := YouHui[3];
DateTimePicker4.Time := YouHui[4];
DateTimePicker5.Time := YouHui[5];
DateTimePicker6.Time := YouHui[6];
DateTimePicker7.Time := YouHui[7];
DateTimePicker8.Time := YouHui[8];
DateTimePicker9.Time := YouHui[9];
DateTimePicker10.Time := YouHui[10];
edtYhMoney1.Value := YouHui[11];
edtYhMoney2.Value := YouHui[12];
edtYhMoney3.Value := YouHui[13];
edtYhMoney4.Value := YouHui[14];
edtYhMoney5.Value := YouHui[15];
//page2
CheckBox1.Checked := HY_PTSD;
CheckBox2.Checked := HY_YHSD;
CheckBox3.Checked := HY_TX;
//CheckBox4.Checked := HY_TZ;
seYHL.Value := YHL;
//page3
CheckBox5.Checked := AutoClear;
CheckBox4.Checked := AddHyMoney;
rgJsByDate.ItemIndex := JsByDate;
end;
procedure TfrmConfig.btnOKClick(Sender: TObject);
begin
GetTime;
if CheckRepeatTime then
begin
ShowMessage('您所定义的时段重叠,请仔细检查!');
end
else
begin
GetData;
WriteConfig;
Close;
end;
end;
function TfrmConfig.CheckRepeatTime: Boolean;
var
I, J: Integer;
begin
Result := False;
for I := 1 to 10 do
begin
for J := 1 to 10 do
begin
if Odd(J) then
begin
if InTimeSect(I, J) then
Result := True;
end;
end;
end;
end;
procedure TfrmConfig.GetTime;
var
I: Integer;
J: Integer;
begin
J := 1;
for I := 0 to frmConfig.ComponentCount - 1 do
begin
if (Components[I] is TDateTimePicker) then
begin
YouHuiTime[J] := TimeOf((Components[I] as TDateTimePicker).Time);
Inc(J);
if J > 10 then Break;
end;
end;
end;
function TfrmConfig.InTimeSect(CheckedTimeIndex,
BeginTimeIndex: Integer): Boolean;
var
CheckedTime, BeginTime, EndTime: TDateTime;
begin
CheckedTime := YouHuiTime[CheckedTimeIndex];
BeginTime := YouHuiTime[BeginTimeIndex];
EndTime := YouHuiTime[BeginTimeIndex + 1];
Result := False;
if Check0TimeSect(CheckedTimeIndex) then Exit; //对长度为0的时段直接返回False.
if BeginTime < EndTime then
if ((CheckedTime > BeginTime) and (CheckedTime < EndTime)) then
Result := True;
if BeginTime > EndTime then
if not ((CheckedTime >= EndTime) and (CheckedTime <= BeginTime)) then
Result := True;
if CheckRepeatSect(CheckedTimeIndex, BeginTimeIndex) then
Result := True; //当两个时段开始、结束时间完全一样时,用这一句可以检查出来。
end;
function TfrmConfig.InTwoDay(ABeginTime, AEndTime: TDateTime): Boolean; //对跨零点时段进行判断。
begin
if ABeginTime > AEndTime then
Result := True
else
Result := False;
end;
function TfrmConfig.Check0TimeSect(CheckTimeIndex: Integer): Boolean;
var
BeginTime, EndTime: TDateTime;
begin
if Odd(CheckTimeIndex) then
begin
BeginTime := YouHuiTime[CheckTimeIndex];
EndTime := YouHuiTime[CheckTimeIndex + 1];
end
else
begin
BeginTime := YouHuiTime[CheckTimeIndex - 1];
EndTime := YouHuiTime[CheckTimeIndex];
end;
if BeginTime = EndTime then
Result := True
else
Result := False
end;
function TfrmConfig.CheckRepeatSect(CheckTimeIndex, BeginTimeSectIndex: Integer): Boolean;
var
BeginTime, EndTime: TDateTime;
BeginSectTime, EndSectTime: TDateTime;
BeginTimeIndex: Integer;
begin
if Odd(CheckTimeIndex) then
begin
BeginTimeIndex := CheckTimeIndex;
BeginTime := YouHuiTime[CheckTimeIndex];
EndTime := YouHuiTime[CheckTimeIndex + 1];
end
else
begin
BeginTimeIndex := CheckTimeIndex - 1;
BeginTime := YouHuiTime[CheckTimeIndex - 1];
EndTime := YouHuiTime[CheckTimeIndex];
end;
BeginSectTime := YouHuiTime[BeginTimeSectIndex];
EndSectTime := YouHuiTime[BeginTimeSectIndex + 1];
Result := False;
if BeginTimeIndex <> BeginTimeSectIndex then
if (BeginTime = BeginSectTime) and (EndTime = EndSectTime) then
Result := True;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -