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

📄 callouttimetablefm.pas

📁 一个电力部门的催缴费用系统
💻 PAS
字号:
unit CallOutTimeTableFM;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ChildFM, StdCtrls, ExtCtrls, Buttons, Mask, dbtables;

type
  Tfm_CallOutTimetable = class(Tfm_Child)
    pnl_Client: TPanel;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    GroupBox4: TGroupBox;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    edt_TimesPerMonth: TEdit;
    edt_MaxTimesPerDay: TEdit;
    Ch_week1: TCheckBox;
    Ch_week2: TCheckBox;
    Ch_week3: TCheckBox;
    Ch_week4: TCheckBox;
    Ch_week5: TCheckBox;
    Ch_week6: TCheckBox;
    Ch_week7: TCheckBox;
    Label6: TLabel;
    Label7: TLabel;
    edt_starttime_1: TMaskEdit;
    edt_endtime_1: TMaskEdit;
    Label8: TLabel;
    edt_starttime_2: TMaskEdit;
    Label9: TLabel;
    edt_endtime_2: TMaskEdit;
    Label10: TLabel;
    edt_starttime_3: TMaskEdit;
    Label11: TLabel;
    edt_endtime_3: TMaskEdit;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    ch_Month1: TCheckBox;
    ch_Month2: TCheckBox;
    ch_Month3: TCheckBox;
    ch_Month4: TCheckBox;
    ch_Month5: TCheckBox;
    ch_Month6: TCheckBox;
    ch_Month7: TCheckBox;
    ch_Month8: TCheckBox;
    ch_Month9: TCheckBox;
    ch_Month10: TCheckBox;
    ch_Month11: TCheckBox;
    ch_Month12: TCheckBox;
    ch_Month13: TCheckBox;
    ch_Month14: TCheckBox;
    ch_Month15: TCheckBox;
    ch_Month16: TCheckBox;
    ch_Month17: TCheckBox;
    ch_Month18: TCheckBox;
    ch_Month19: TCheckBox;
    ch_Month20: TCheckBox;
    ch_Month21: TCheckBox;
    ch_Month22: TCheckBox;
    ch_Month23: TCheckBox;
    ch_Month24: TCheckBox;
    ch_Month25: TCheckBox;
    ch_Month26: TCheckBox;
    ch_Month27: TCheckBox;
    ch_Month28: TCheckBox;
    ch_Month29: TCheckBox;
    ch_Month30: TCheckBox;
    ch_Month31: TCheckBox;
    Cb_ID: TComboBox;
    Label12: TLabel;
    Label13: TLabel;
    Edt_UserType: TEdit;
    Btn_AddNew: TBitBtn;
    procedure FormResize(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Btn_AddNewClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Cb_IDChange(Sender: TObject);
  private
    { Private declarations }
    m_iTableID : Integer;
    procedure LoadCallOutTimeTable(iID: Integer);
    procedure PostCallOutTimeTable(iID:Integer);
    procedure DecodeWeekStr(WeekStr:string);
    procedure DecodeMonthStr(MonthStr:String);
    function EnCodeWeekStr:string;
    function EnCodeMonthStr:string;
    function GetMaxID : Integer;
    procedure LoadID;

  public
    { Public declarations }
  end;

var
  fm_CallOutTimetable: Tfm_CallOutTimetable;

implementation
uses CommonDataDM,SystemDM;
{$R *.DFM}
procedure Tfm_CallOutTimeTable.DecodeWeekStr(WeekStr:string);
var
  i,m:integer;
  TempComponent:TComponent;
begin
  WeekStr:=SysDM.SelfStrCat(weekstr,7,'0');
  for i:=0 to ComponentCount-1 do
  begin
    TempComponent := Components[i];
    if (TempComponent is TCheckbox) and (Pos('week',TempComponent.Name)>0) then
    begin
      m:=TempComponent.Tag;
      if WeekStr[m]='1' then
        (TempComponent as TcheckBox).checked:=true
      else
        (TempComponent as TcheckBox).checked:=False;
    end;
  end;
end;
procedure Tfm_CallOutTimeTable.DecodeMonthStr(MonthStr:String);
var
  i,m:integer;
  TempComponent:TComponent;
begin
  MonthStr:=SysDM.SelfStrCat(Monthstr,31,'0');
  for i:=0 to ComponentCount-1 do
  begin
    TempComponent := Components[i];
    if (TempComponent is TCheckbox) and (Pos('Month',TempComponent.Name)>0) then
    begin
      m:=TempComponent.Tag;
      if MonthStr[m]='1' then
        (TempComponent as TcheckBox).checked:=true
      else
        (TempComponent as TcheckBox).checked:=False;
    end;
  end;
end;
function Tfm_CallOutTimetable.EnCodeWeekStr:string;
var
  i,m:integer;
  TempComponent:TComponent;
  sRet:String;
begin
  sRet:='0000000';
  for i:=0 to ComponentCount-1 do
  begin
    TempComponent := Components[i];
    if (TempComponent is TCheckbox) and (Pos('week',TempComponent.Name)>0) then
    begin
      m:=TempComponent.Tag;
      if (TempComponent as TcheckBox).checked=true then
        sRet[m]:='1';
    end;
  end;
  result:=sRet;
end;
function Tfm_CallOutTimetable.EnCodeMonthStr:string;
var
  i,m:integer;
  TempComponent:TComponent;
  sRet:String;
begin
  sRet:='0000000000000000000000000000000';
  for i:=0 to ComponentCount-1 do
  begin
    TempComponent := Components[i];
    if (TempComponent is TCheckbox) and (Pos('Month',TempComponent.Name)>0) then
    begin
      m:=TempComponent.Tag;
      if (TempComponent as TcheckBox).checked=true then
        sRet[m]:='1';
    end;
  end;
  result:=sRet;
end;
procedure Tfm_CallOutTimeTable.LoadCallOutTimeTable(iID: Integer);
begin
  with DM_CommonData.Qr_CallOutTimeTable do
  begin
    Close;
    if iID = -1 then
     Sql.Text :='Select * from CalloutTimeTable where ID=1'
    else
     Sql.Text :=Format('Select * from CalloutTimeTable where ID = %d',[iID]);
    Prepare;
    Open;
    //if not IsEmpty then
    //begin
      edt_TimesPerMonth.Text := FieldbyName('TimesPerMonth').AsString;
      edt_MaxTimesPerDay.Text:= FieldbyName('MaxTimesPerDay').AsString;
      edt_StartTime_1.Text   := FieldbyName('StartTime_1').AsString;
      edt_StartTime_2.Text   := FieldbyName('StartTime_2').AsString;
      edt_StartTime_3.Text   := FieldbyName('StartTime_3').AsString;
      edt_EndTime_1.Text     := FieldbyName('EndTime_1').AsString;
      edt_EndTime_2.Text     := FieldbyName('EndTime_2').AsString;
      edt_EndTime_3.Text     := FieldbyName('EndTime_3').AsString;
      Edt_UserType.Text := FieldByName('Note').AsString; 
      DecodeWeekStr(FieldbyName('WeekDayEnable').AsString);
      DecodeMonthStr(FieldbyName('MonthDayEnable').AsString);

    //end;
  end;
end;
procedure Tfm_CallOutTimetable.PostCallOutTimeTable(iID: Integer);
begin
  with DM_CommonData.Qr_CallOutTimeTable do
  begin
    Close;
    Sql.Text :=Format('Select * from CallOutTimeTable where ID= %d',[iID]);
    Prepare;
    Open;
    if not IsEmpty then
      Edit
    else
    begin
      Append;
      FieldbyName('ID').AsInteger:=iID;
    end;
    FieldbyName('TimesPerMonth').AsString :=edt_TimesPerMonth.Text;
    FieldbyName('MaxTimesPerDay').AsString:=edt_MaxTimesPerDay.Text;
    FieldbyName('StartTime_1').AsString   :=edt_StartTime_1.Text;
    FieldbyName('StartTime_2').AsString   :=edt_StartTime_2.Text;
    FieldbyName('StartTime_3').AsString   :=edt_StartTime_3.Text;
    FieldbyName('EndTime_1').AsString     :=edt_EndTime_1.Text;
    FieldbyName('EndTime_2').AsString     :=edt_EndTime_2.Text;
    FieldbyName('EndTime_3').AsString     :=edt_EndTime_3.Text;
    FieldbyName('WeekDayEnable').AsString :=EnCodeWeekStr;
    FieldbyName('MonthDayEnable').AsString :=EnCodeMonthStr;
    FieldbyName('Note').AsString := Edt_userType.Text ;
    Post;
    Close;
  end;
end;
procedure Tfm_CallOutTimetable.FormResize(Sender: TObject);
begin
  inherited;
  pnl_Client.Top := (Height - pnl_Client.Height) div 2;
  pnl_Client.Left := (Width - pnl_Client.Width) div 2;
end;

procedure Tfm_CallOutTimetable.BitBtn1Click(Sender: TObject);
begin
  inherited;
  PostCallOutTimeTable(StrToInt(Cb_ID.Text));
  Btn_AddNew.Enabled := True;
end;

procedure Tfm_CallOutTimetable.BitBtn2Click(Sender: TObject);
begin
  inherited;
  close;
end;

procedure Tfm_CallOutTimetable.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  inherited;
  FM_CallOutTimeTable:=nil;
end;

function Tfm_CallOutTimetable.GetMaxID: Integer;
begin
 with TQuery.Create(nil)do
 try
  DataBaseName := SysDM.DBMain.DatabaseName;
  Close;
  Sql.Text := 'Select ID from CallOutTimeTable order by ID Desc';
  Open;
  First;
  Result := FieldByName('ID').AsInteger + 1;
 finally
  Free;
 end;
end;

procedure Tfm_CallOutTimetable.Btn_AddNewClick(Sender: TObject);
begin
  inherited;
 m_iTableID := GetMaxID;
 CB_ID.Items.Add(IntToStr(m_iTableID));
 CB_ID.ItemIndex := Cb_ID.Items.Count - 1;
 LoadCallOutTimeTable(m_iTableID);
 Btn_AddNew.Enabled := False;
end;

procedure Tfm_CallOutTimetable.FormShow(Sender: TObject);
begin
  inherited;
  LoadID;
  LoadCallOutTimeTable(StrToInt(Cb_ID.Text));
end;

procedure Tfm_CallOutTimetable.LoadID;
var
 I: Integer;
begin
 with TQuery.Create(nil)do
 try
  DataBaseName := SysDM.DBMain.DatabaseName;
  Close;
  Sql.Text := 'Select ID From CallOutTimeTable Order By id';
  Open;
  for I := 0 to RecordCount - 1 do
   begin
    Cb_ID.Items.Add(FieldByName('ID').AsString);
    Next;
   end;
  Cb_ID.ItemIndex := 0; 
 finally
  Free;
 end;
end;

procedure Tfm_CallOutTimetable.Cb_IDChange(Sender: TObject);
begin
  inherited;
 LoadCallOutTimeTable(StrToInt(Cb_ID.Text));
end;

end.

⌨️ 快捷键说明

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