?? addkcapunit.~pas
字號:
unit AddkcapUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, CheckLst;
type
TAddkcapForm = class(TForm)
Label1: TLabel;
DateTimePicker1: TDateTimePicker;
RadioGroup1: TRadioGroup;
Label2: TLabel;
ComboBox1: TComboBox;
Label3: TLabel;
ComboBox2: TComboBox;
Label4: TLabel;
Edit1: TEdit;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
DateTimePicker2: TDateTimePicker;
DateTimePicker3: TDateTimePicker;
CheckListBox1: TCheckListBox;
Label8: TLabel;
Button1: TButton;
Label9: TLabel;
ComboBox3: TComboBox;
Label10: TLabel;
ComboBox4: TComboBox;
Label11: TLabel;
ComboBox5: TComboBox;
Button2: TButton;
Button3: TButton;
ComboBox6: TComboBox;
procedure RadioGroup1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure DateTimePicker1Change(Sender: TObject);
private
{ Private declarations }
//教師ID
teachidArray : Array of integer;
//班級id
bjidArray : array of integer;
//收費類型
sfkindArray : Array of integer;
//機房編號
jfnumArray : array of string;
termbeginDate : Tdatetime;
weekcount : integer;
//增加單個安排
function addoneap(usejf:string):boolean;
//增加多個安排
function addmoreap(usejf:string):boolean;
//求出指定日期第幾周的日期
function GetDateByWeekNo(date : TDate;weekno,sq : integer):Tdate;
//求某星期的第一天
function GetFirstDayofWeek(date : Tdate):Tdate;
public
{ Public declarations }
kcname : string;
end;
var
AddkcapForm: TAddkcapForm;
implementation
uses ZLB, datamodule,StrUtils,DateUtils, KCGL;
{$R *.dfm}
procedure TAddkcapForm.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 TAddkcapForm.FormShow(Sender: TObject);
var
i : integer;
begin
datetimepicker1.Date := now();
combobox6.Clear;
edit1.Clear;
combobox3.Clear;
combobox4.Clear;
combobox5.Clear;
CheckListBox1.Clear;
RadioGroup1Click(sender);
with dmfm.ADOQuery1 do
begin
close;
sql.Text := 'select * from Tkc';
open;
setlength(teachidArray,recordcount);
i := 0;
while not eof do
begin
combobox6.Items.Add(fieldbyname('Fname').asstring);
next;
end;
combobox6.ItemIndex := combobox6.Items.IndexOf(kcname);
//收費方式
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);
inc(i);
next;
end;
combobox3.ItemIndex := 0;
//教師
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);
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);
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);
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;
combobox1.ItemIndex := 2;
ComboBox1Change(sender);
end;
end;
procedure TAddkcapForm.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 TAddkcapForm.Button2Click(Sender: TObject);
var
i,count : integer;
usejf : string;
begin
if combobox6.Text = '' then
begin
Messagebox(handle,'課選擇課程名!','提示',$30);
exit;
end;
if combobox3.ItemIndex = -1 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;
usejf := '';
for i := 0 to checklistbox1.Count-1 do
if checklistbox1.Checked[i] then
begin
inc(count);
usejf := usejf + format('''%s'',',[jfnumArray[i]]);
end;
usejf := ansireplacestr(usejf,'''','''''');
usejf := copy(usejf,1,length(usejf)-1);
if count = 0 then
begin
Messagebox(handle,'請選擇使用的機房!','提示',$30);
exit;
end;
if RadioGroup1.ItemIndex = 0 then
begin
if not addoneap(usejf) then
exit;
end
else
begin
if not addmoreap(usejf) then
exit;
end;
KCGLForm.formshow(sender);
end;
procedure TAddkcapForm.Button1Click(Sender: TObject);
begin
zlbform.InputStr := edit1.Text;
if ZLBform.showModal = mrok then
edit1.Text := zlbform.ReturnStr;
end;
//增加單個安排
function TAddkcapForm.addoneap(usejf:string):boolean;
var
str : string;
num : integer;
itype : integer;
date,begintime,endtime : string;
sflx,jsNum,bjid : integer;
begin
with dmfm.ADOQuery1 do
begin
close;
sql.Text := 'select isnull(max(fid),0) + 1 from Tkcap';
open;
num := fields[0].AsInteger;
itype := 0;
//date1 := FormatDateTime('yyyy-mm-dd',datetimepicker1.Date);
date := datetostr(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('insert Tkcap (Fnum,FkcName,Ftype,Fdate,Fxq,Fsflx,FjsNum,Fbjid,FjfNum,FbeginTime,FendTime) values '#10 +
' (''%.4d'',''%s'',%d,''%s'',%d,%d,%d,%d,''%s'',''%s'',''%s'')',
[num,combobox6.text,itype,date,combobox2.itemindex,sflx,jsnum,bjid,usejf,begintime,endtime]);
close;
sql.Clear;
sql.Add(str);
str := format('insert TkcapMx (FkcNum,FkcName,Fbegintime,Fendtime,Fsflx,FjsNum,Fbjid,FjfNum) values '#10 +
' (''%.4d'',''%s'',''%s'',''%s'',%d,%d,%d,''%s'')',
[num,combobox6.text,begintime,endtime,sflx,jsnum,bjid,usejf]);
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;
//增加多個安排
function TAddkcapForm.addmoreap(usejf:string):boolean;
var
str : string;
num : integer;
itype : integer;
begintime,endtime : string;
date : Tdate;
sflx,jsNum,bjid : integer;
weekList : TstringList;
i : integer;
begin
if edit1.Text = '' then
begin
Messagebox(handle,'請選擇周次!','提示',$30);
exit;
end;
with dmfm.ADOQuery1 do
begin
weekList := TstringList.Create;
weeklist.Text := ansireplacestr(edit1.Text,',',#10);
close;
sql.Text := 'select isnull(max(fid),0) + 1 from Tkcap';
open;
num := fields[0].AsInteger;
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('insert Tkcap (Fnum,FkcName,Ftype,Ffw,Fxq,Fzc,Fsflx,FjsNum,Fbjid,FjfNum,FbeginTime,FendTime) values '#10 +
' (''%.4d'',''%s'',%d,%d,%d,''%s'',%d,%d,%d,''%s'',''%s'',''%s'')',
[num,combobox6.text,itype,combobox1.itemindex,combobox2.itemindex,edit1.text,
sflx,jsnum,bjid,usejf,begintime,endtime]);
close;
sql.Clear;
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,FjfNum) values '#10 +
' (''%.4d'',''%s'',''%s'',''%s'',%d,%d,%d,''%s'')',
[num,combobox6.text,begintime,endtime,sflx,jsnum,bjid,usejf]);
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 TAddkcapForm.Button3Click(Sender: TObject);
begin
close;
end;
//求出指定日期第幾周的日期
function TAddkcapForm.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 TAddkcapForm.GetFirstDayofWeek(date : Tdate):Tdate;
var
tmpdate1 : Tdate;
begin
tmpdate1 := date;
while weekof(tmpdate1) = weekof(date) do
tmpdate1 := tmpdate1 - 1;
result := tmpdate1;
end;
procedure TAddkcapForm.DateTimePicker1Change(Sender: TObject);
begin
ComboBox2.ItemIndex := dayofweek(DateTimePicker1.DateTime)-1;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -