?? editkcapunit.~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, '請設(shè)置當前所在學(xué)期!', '提示', $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.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -