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

📄 editkcapunit.~pa

📁 delphi6.0版本的主要用于学样、网吧的计费系统的源码
💻 ~PA
字号:
unit EditkcapUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, CheckLst;

type
  TEditkcapForm = class(TForm)
    Label1 : TLabel;
    Label2 : TLabel;
    Label3 : TLabel;
    Label4 : TLabel;
    Label6 : TLabel;
    Label7 : TLabel;
    Label8 : TLabel;
    Label9 : TLabel;
    Label10 : TLabel;
    Label11 : TLabel;
    Label12 : TLabel;
    DateTimePicker1 : TDateTimePicker;
    RadioGroup1 : TRadioGroup;
    ComboBox1 : TComboBox;
    ComboBox2 : TComboBox;
    Edit1 : TEdit;
    DateTimePicker2 : TDateTimePicker;
    DateTimePicker3 : TDateTimePicker;
    Button1 : TButton;
    ComboBox3 : TComboBox;
    ComboBox4 : TComboBox;
    ComboBox5 : TComboBox;
    Button2 : TButton;
    Button3 : TButton;
    ComboBox6 : TComboBox;
    Edit2 : TEdit;
    Button4 : TButton;
    procedure RadioGroup1Click(Sender : TObject);
    procedure ComboBox1Change(Sender : TObject);
    procedure Button2Click(Sender : TObject);
    procedure Button1Click(Sender : TObject);
    procedure Button3Click(Sender : TObject);
    procedure FormShow(Sender : TObject);
    procedure DateTimePicker1Change(Sender : TObject);
    procedure Button4Click(Sender : TObject);
  private
    { Private declarations }
    teachidArray : array of integer;
    //收费类型
    sfkindArray : array of integer;
    bjidArray : array of integer;
    //jfnumArray : array of string;
    termbeginDate : Tdatetime;
    weekcount : integer;

    //增加单个安排
    function addoneap(usejqid, usejqname : string) : boolean;
    //增加多个安排
    function addmoreap(usejqid, usejqname : string) : boolean;
    //求出指定日期第几周的日期
    function GetDateByWeekNo(date : TDate; weekno, sq : integer) : Tdate;
    //求某星期的第一天
    function GetFirstDayofWeek(date : Tdate) : Tdate;
    procedure DoInit(kcapNum : string);

  public
    { Public declarations }
    kcapnum : string;
  end;

var
  EditkcapForm : TEditkcapForm;

implementation

uses ZLB, datamodule, StrUtils, DateUtils, KCGL, AddjfjqUnit;

{$R *.dfm}

procedure TEditkcapForm.RadioGroup1Click(Sender : TObject);
begin
  datetimepicker1.Enabled := radiogroup1.ItemIndex = 0;
  combobox1.Enabled := radiogroup1.ItemIndex = 1;
  combobox2.Enabled := radiogroup1.ItemIndex = 1;
  edit1.Enabled := radiogroup1.ItemIndex = 1;
  button1.Enabled := radiogroup1.ItemIndex = 1;
end;

procedure TEditkcapForm.ComboBox1Change(Sender : TObject);
var
  i : integer;
  str : string;
begin
  edit1.Clear;
  if combobox1.ItemIndex = 0 then
    begin
      for i := 1 to weekcount do
        begin
          if i mod 2 <> 0 then
            str := str + format('%d,', [i]);
        end;
    end;
  if combobox1.ItemIndex = 1 then
    begin
      for i := 1 to weekcount do
        begin
          if i mod 2 = 0 then
            str := str + format('%d,', [i]);
        end;
    end;
  if combobox1.ItemIndex = 2 then
    begin
      for i := 1 to weekcount do
        str := str + format('%d,', [i]);
    end;
  str := copy(str, 1, length(str) - 1);
  edit1.Text := str;
end;

procedure TEditkcapForm.Button2Click(Sender : TObject);
var
  //i, count : integer;
  usejqid, usejqname : string;
begin
  if combobox6.Text = '' then
    begin
      Messagebox(handle, '课选择课程名!', '提示', $30);
      exit;
    end;
  if combobox4.ItemIndex = -1 then
    begin
      Messagebox(handle, '请选择教师!', '提示', $30);
      exit;
    end;
  if combobox5.ItemIndex = -1 then
    begin
      Messagebox(handle, '请选择班级!', '提示', $30);
      exit;
    end;
  //count := 0;
  usejqid := edit2.Hint;
  usejqname := edit2.Text;
  {for i := 0 to checklistbox1.Count - 1 do
    if checklistbox1.Checked[i] then
      begin
        inc(count);
        usejf := usejf + format('''%s'',', [jfnumArray[i]]);
      end;
  usejq := ansireplacestr(usejf, '''', '''''');
  usejq := copy(usejf, 1, length(usejf) - 1);}
  usejqname := ansireplacestr(usejqname, '''', '''''');
  if usejqid = '' then
    begin
      Messagebox(handle, '请选择使用的机器!', '提示', $30);
      exit;
    end;
  if RadioGroup1.ItemIndex = 0 then
    begin
      if not addoneap(usejqid, usejqname) then
        exit;
    end
  else
    begin
      if not addmoreap(usejqid, usejqname) then
        exit;
    end;
  close;
  KCGLForm.formshow(sender);
end;

procedure TEditkcapForm.Button1Click(Sender : TObject);
begin
  zlbform.InputStr := edit1.Text;
  if ZLBform.showModal = mrok then
    edit1.Text := zlbform.ReturnStr;
end;

//edit单个安排

function TEditkcapForm.addoneap(usejqid, usejqname : string) : boolean;
var
  str : string;
  itype : integer;
  date, begintime, endtime : string;
  sflx, jsNum, bjid : integer;
begin
  result := false;
  with dmfm.ADOQuery1 do
    begin
      itype := 0;
      date := FormatDateTime('yyyy-mm-dd', datetimepicker1.Date);
      sflx := sfkindArray[combobox3.ItemIndex];
      jsnum := teachidArray[combobox4.ItemIndex];
      bjid := bjidarray[combobox5.itemindex];
      begintime := FormatDateTime('yyyy-mm-dd ', datetimepicker1.Date) + FormatDateTime('hh:nn:ss', datetimepicker2.Time);
      endtime := FormatDateTime('yyyy-mm-dd ', datetimepicker1.Date) + FormatDateTime('hh:nn:ss', datetimepicker3.Time);
      str := format('update Tkcap set FkcName= ''%s'',Ftype=%d,Fdate=''%s'',Fxq=%d, '#10 +
        '     Fsflx=%d,FjsNum=%d,Fbjid=%d,FjqNum=''%s'',FjqName=''%s'',FbeginTime=''%s'',Fendtime=''%s'' where Fnum = ''%s''',
        [combobox6.text, itype, date, combobox2.itemindex, sflx, jsnum, bjid, usejqid, usejqname, begintime, endtime, kcapnum]);
      close;
      sql.Clear;
      sql.Add(str);
      str := format('delete TkcapMx where Fkcnum = ''%s''', [kcapnum]);
      sql.Add(str);
      str := format('insert TkcapMx (FkcNum,FkcName,Fbegintime,Fendtime,Fsflx,FjsNum,Fbjid,FjqNum,FjqName) values '#10 +
        '  (''%.4d'',''%s'',''%s'',''%s'',%d,%d,%d,''%s'',''%s'')',
        [strtoint(kcapnum), combobox6.text, begintime, endtime, sflx, jsnum, bjid, usejqid, usejqname]);
      sql.add(str);
      {str := format('update TkcapMx set FkcName=''%s'',Fbegintime=''%s'',Fendtime=''%s'', '#10 +
        '  Fsflx=%d,FjsNum=%d,Fbjid=%d,FjqNum=''%s'',FjqName=''%s'' where FkcNum = ''%s'' ',
        [combobox6.text, begintime, endtime, sflx, jsnum, bjid, usejqid, usejqname, kcapnum]);
      sql.Add(str);}
      dmfm.ADOConnection.BeginTrans;
      try
        execsql;
        dmfm.ADOConnection.CommitTrans;
      except
        on e : exception do
          begin
            messagebox(handle, pchar('保存时出错!'#10'错误信息:' + e.Message), '提示', $10);
            dmfm.ADOConnection.RollbackTrans;
            exit;
          end;
      end;
    end;
  result := true;
end;

//edit多个安排

function TEditkcapForm.addmoreap(usejqid, usejqname : string) : boolean;
var
  str : string;
  itype : integer;
  begintime, endtime : string;
  date : Tdate;
  sflx, jsNum, bjid : integer;
  weekList : TstringList;
  i : integer;
begin
  result := false;

  if edit1.Text = '' then
    begin
      Messagebox(handle, '请选择周次!', '提示', $30);
      exit;
    end;

  with dmfm.ADOQuery1 do
    begin
      weekList := TstringList.Create;
      weeklist.Text := ansireplacestr(edit1.Text, ',', #10);
      itype := 1;
      sflx := sfkindArray[combobox3.ItemIndex];
      jsnum := teachidArray[combobox4.ItemIndex];
      bjid := bjidarray[combobox5.itemindex];
      begintime := FormatDateTime('yyyy-mm-dd ', datetimepicker1.Date) + FormatDateTime('hh:nn:ss', datetimepicker2.Time);
      endtime := FormatDateTime('yyyy-mm-dd ', datetimepicker1.Date) + FormatDateTime('hh:nn:ss', datetimepicker3.Time);
      str := format('update Tkcap set FkcName=''%s'',Ftype=%d,Ffw=%d,Fxq=%d,Fzc=''%s'',Fsflx=%d, '#10 +
        '  FjsNum=%d,Fbjid=%d,FjqNum = ''%s'',FjqName = ''%s'',FbeginTime=''%s'',Fendtime=''%s'' where fnum = ''%s''',
        [combobox6.text, itype, combobox1.itemindex, combobox2.itemindex, edit1.text, sflx, jsnum, bjid, usejqid, usejqname, begintime, endtime, kcapnum]);
      close;
      sql.Clear;
      sql.Add(str);
      str := format('delete TkcapMx where Fkcnum = ''%s''', [kcapnum]);
      sql.Add(str);
      for i := 0 to weeklist.Count - 1 do
        begin
          date := GetDateByWeekNo(termbeginDate, strtoint(weekList.strings[i]), combobox2.ItemIndex);
          begintime := formatdatetime('yyyy-mm-dd ', date) + formatdatetime('hh:nn:ss', DateTimePicker2.DateTime);
          endtime := formatdatetime('yyyy-mm-dd ', date) + formatdatetime('hh:nn:ss', DateTimePicker3.DateTime);
          str := format('insert TkcapMx (FkcNum,FkcName,Fbegintime,Fendtime,Fsflx,FjsNum,Fbjid,FjqNum,FjqName) values '#10 +
            '  (''%.4d'',''%s'',''%s'',''%s'',%d,%d,%d,''%s'',''%s'')',
            [strtoint(kcapnum), combobox6.text, begintime, endtime, sflx, jsnum, bjid, usejqid, usejqname]);
          sql.add(str);
        end;
      dmfm.ADOConnection.BeginTrans;
      try
        execsql;
        dmfm.ADOConnection.CommitTrans;
      except
        on e : exception do
          begin
            messagebox(handle, pchar('保存时出错!'#10'错误信息:' + e.Message), '提示', $10);
            dmfm.ADOConnection.RollbackTrans;
            weekList.Free;
            exit;
          end;
      end;
    end;
  result := true;
  weekList.Free;
end;

procedure TEditkcapForm.Button3Click(Sender : TObject);
begin
  close;
end;

//求出指定日期第几周的日期

function TEditkcapForm.GetDateByWeekNo(date : TDate; weekno, sq : integer) : Tdate;
var
  //i : integer;
  //no : integer;
  tmpdate1, tmpdate2 : Tdate;
begin
  tmpdate1 := incweek(date, weekno - 1);
  tmpdate2 := GetFirstDayofWeek(tmpdate1);
  tmpdate2 := tmpdate2 + sq;
  result := tmpdate2;
end;

//求某星期的第一天

function TEditkcapForm.GetFirstDayofWeek(date : Tdate) : Tdate;
var
  tmpdate1 : Tdate;
begin
  tmpdate1 := date;
  while weekof(tmpdate1) = weekof(date) do
    tmpdate1 := tmpdate1 - 1;
  result := tmpdate1;
end;

procedure TEditkcapForm.DoInit(kcapNum : string);
var
  i : integer;
  kcname : string;
  sfkind, jsnum, bjnum : integer;
begin
  with dmfm.ADOQuery1 do
    begin
      close;
      sql.Text := format('select * from TKcap where Fnum = ''%s''', [kcapnum]);
      open;
      if eof then
        exit;
      edit1.Clear;
      if fieldbyname('Ftype').AsInteger = 1 then
        begin
          radiogroup1.ItemIndex := 1;
          datetimepicker1.Date := fieldbyname('Fdate_created').AsDateTime;
          combobox1.ItemIndex := fieldbyname('Ffw').AsInteger;
          combobox2.ItemIndex := fieldbyname('Fxq').AsInteger;
          edit1.Text := fieldbyname('Fzc').AsString;
          datetimepicker2.Time := fieldbyname('Fbegintime').AsDateTime;
          datetimepicker3.Time := fieldbyname('Fendtime').AsDateTime;
        end
      else
        begin
          datetimepicker1.Date := fieldbyname('Fdate').AsDateTime;
          DateTimePicker1Change(self);
          radiogroup1.ItemIndex := 0;
        end;

      //收费类型
      sfkind := fieldbyname('Fsflx').AsInteger;
      kcname := fieldbyname('Fkcname').AsString;
      jsnum := fieldbyname('Fjsnum').AsInteger;
      bjnum := fieldbyname('Fbjid').AsInteger;

      //使用机器
      edit2.Hint := fieldbyname('FjqNum').AsString;
      edit2.Text := fieldbyname('FjqName').AsString;

      combobox6.Clear;
      combobox3.Clear;
      combobox4.Clear;
      combobox5.Clear;
      //CheckListBox1.Clear;
      RadioGroup1Click(self);

      close;
      sql.Text := 'select * from Tkc';
      open;
      setlength(teachidArray, recordcount);
      //i := 0;
      while not eof do
        begin
          combobox6.Items.Add(fieldbyname('Fname').asstring);
          if fieldbyname('Fname').asstring = kcname then
            combobox6.ItemIndex := combobox6.Items.Count - 1;
          next;
        end;

      close;
      sql.Text := 'select * from Tteach';
      open;
      setlength(teachidArray, recordcount);
      i := 0;
      while not eof do
        begin
          teachidArray[i] := fieldbyname('Fnum').AsInteger;
          combobox4.Items.Add(fieldbyname('Fname').asstring);
          if teachidArray[i] = jsnum then
            combobox4.ItemIndex := i;
          inc(i);
          next;
        end;

      //收费方式
      close;
      sql.Text := 'select * from fltb';
      open;
      setlength(sfkindArray, recordcount);
      i := 0;
      while not eof do
        begin
          sfkindArray[i] := fieldbyname('swkind').AsInteger;
          combobox3.Items.Add(fieldbyname('name').AsString);
          if sfkindArray[i] = sfkind then
            combobox3.ItemIndex := i;
          inc(i);
          next;
        end;

      close;
      sql.Text := 'select * from TBJ';
      open;
      setlength(bjidArray, recordcount);
      i := 0;
      while not eof do
        begin
          bjidArray[i] := fieldbyname('id').AsInteger;
          combobox5.Items.Add(fieldbyname('Fname').asstring);
          if bjidArray[i] = bjnum then
            combobox5.ItemIndex := i;
          inc(i);
          next;
        end;

      {close;
      sql.Text := 'select * from TjfInfo';
      open;
      setlength(jfnumArray, recordcount);
      i := 0;
      while not eof do
        begin
          jfnumArray[i] := fieldbyname('Fnum').AsString;
          checkListbox1.Items.Add(fieldbyname('Fnum').AsString + '  ' + fieldbyname('Fname').AsString);
          if pos(format('''%s'',', [jfnumArray[i]]), jfnum + ',') <> 0 then
            checkListbox1.Checked[i] := true;
          inc(i);
          next;
        end;}

      close;
      sql.Text := 'select * from txq where fname = (select Fvalue from tconf where fvar = ''CURRPERIOD'')';
      open;
      if eof then
        begin
          messagebox(handle, '请设置当前所在学期!', '提示', $30);
          exit;
        end;
      termbeginDate := fieldbyname('FbeginDate').AsDateTime;
      weekcount := fieldbyname('FZS').AsInteger;
    end;
end;

procedure TEditkcapForm.FormShow(Sender : TObject);
begin
  DoInit(kcapNum);
end;

procedure TEditkcapForm.DateTimePicker1Change(Sender : TObject);
begin
  ComboBox2.ItemIndex := dayofweek(DateTimePicker1.DateTime) - 1;
end;

procedure TEditkcapForm.Button4Click(Sender : TObject);
begin
  Seljfjqform.InputIdStr := edit2.Hint;
  Seljfjqform.InputNameStr := edit2.Text;
  Seljfjqform.showModal;
  edit2.Hint := Seljfjqform.ReturnIdStr;
  edit2.Text := Seljfjqform.ReturnNameStr;
end;

end.

⌨️ 快捷键说明

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