📄 coursetimeassignfrm.~pas
字号:
unit CourseTimeAssignFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DbChildFrm, DB, ADODB, ImgList, StdCtrls, Grids, DBGrids,
ComCtrls, Buttons, ExtCtrls, DBCtrls, Mask, DBDateTimePicker;
type
TSNode = class
public
BH: string;
MC: string;
Constructor Create(ABH: string);
end;
TCourseTimeAssignForm = class(TDbChildForm)
ADOQuery1ClassCode: TWideStringField;
ADOQuery1CourseCode: TWideStringField;
ADOQuery1DayWeek: TWordField;
ADOQuery1term: TWideStringField;
ADOQuery2: TADOQuery;
ADOQuery3: TADOQuery;
ADOQuery1CourseName: TStringField;
ADOQuery1ClassCap: TStringField;
ADOQuery1teacher: TWideStringField;
tv: TTreeView;
Splitter1: TSplitter;
ADOQuery4: TADOQuery;
ADOQuery1weekcap: TStringField;
ADOQuery1Beginhour: TWordField;
ADOQuery1Endhour: TWordField;
ADOQuery1beginMin: TWordField;
ADOQuery1EndMin: TWordField;
ADOQuery1Explain: TWideStringField;
Panel3: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
DBLookupComboBox1: TDBLookupComboBox;
DBComTerm: TDBComboBox;
DBLookupComboBox4: TDBLookupComboBox;
Panel4: TPanel;
DBEdit1: TDBEdit;
Edit1: TEdit;
DBEdit2: TDBEdit;
Panel5: TPanel;
DBEdit6: TDBEdit;
Edit2: TEdit;
DBEdit7: TDBEdit;
DBEdit3: TDBEdit;
SpeedButton1: TSpeedButton;
ADOQuerypublic: TADOQuery;
ImageListTree: TImageList;
DbcboTea: TDBComboBox;
procedure FormShow(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure tvClick(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
procedure CreateTree;
function GetClassCaption(sCode:string):string;
function AddChildNode(tv: TTreeView; Node: TTreeNOde;
Code,Name: string): TTreeNode;
procedure AppendRecordToAdo(sClassCode:string);
procedure CreateTeacherItems;
public
{ Public declarations }
end;
var
CourseTimeAssignForm: TCourseTimeAssignForm;
procedure CallCourseTimeAssignForm;
implementation
uses MainDm, ClassCheckSelectFrm;
{$R *.dfm}
function GetBH(Node: TTreeNode): string;
begin
if Node = nil then Result := ''
else Result := TsNode(Node.Data).BH;
end;
procedure CallCourseTimeAssignForm;
begin
if CourseTimeAssignForm = nil then
CourseTimeAssignForm := TCourseTimeAssignForm.Create(Application);
CourseTimeAssignForm.ShowModal;
CourseTimeAssignForm.Free;
CourseTimeAssignForm := nil;
end;
{ TCourseTimeAssignForm }
procedure TCourseTimeAssignForm.CreateTree;
var
sTeacher,sTerm,PreTerm,PreTeacher,sClassCode,sClassName: string;
First1,second: TTreeNode;
begin
//
with DmMain.QueryPublic do
begin
Close;
Sql.Text := 'select * from CourseTimeAssign Order by Term,Teacher,ClassCode';
Open;
preTerm := '';
preTeacher := '';
while not eof do
begin
sTerm := FieldByName('Term').Asstring;
sTeacher := FieldByName('Teacher').Asstring;
sClassCode := FieldByName('ClassCode').Asstring;
sClassName := GetClassCaption(sClassCode);
if sTerm <> preTerm then
begin
First1 := AddChildNode(tv,nil,sTerm,sTerm); //年级
Second := AddChildNode(tv,First1,sTeacher,sTeacher); //老师
AddChildNode(tv,Second,sClassCode,sClassName); //班级
end
else
if sTeacher <> preTeacher then
begin
Second := AddChildNode(tv,First1,sTeacher,sTeacher);
AddChildNode(tv,Second,sClassCode,sClassName); //班级
end
else
AddChildNode(tv,Second,sClassCode,sClassName); //班级
Next;
preTerm := sTerm;
preTeacher := sTeacher;
end;
end;
end;
procedure TCourseTimeAssignForm.FormShow(Sender: TObject);
begin
inherited;
CreateTree;
CreateTeacherItems;
end;
function TCourseTimeAssignForm.AddChildNode(tv: TTreeView; Node: TTreeNOde;
Code, Name: string): TTreeNode;
var
child: TTreeNode;
begin
child := tv.Items.AddChild(Node,Name);
child.Data := TsNode.Create(Code);
case Child.Level of
0: child.ImageIndex := 0;
1: child.ImageIndex := 1;
2: child.ImageIndex := 2;
end;
child.SelectedIndex := Child.ImageIndex;
Result := child;
end;
function TCourseTimeAssignForm.GetClassCaption(sCode: string): string;
begin
Result := '';
with ADOQuerypublic do
begin
Close;
Sql.Text := 'select * from Monitor where ClassCode = ' + QuotedStr(sCode);
open;
Result := FieldByName('ClassCaption').AsString;
end;
end;
procedure TCourseTimeAssignForm.AppendRecordToAdo(sClassCode: string);
var
st,sCourse,sweek,sbh,sbm,seh,sem,steacher: string;
begin
With AdoQuery1 do
begin
st := AdoQuery1Term.Value;
sCourse := AdoQuery1CourseCode.Value;
sWeek := ADOQuery1DayWeek.AsString;
sbh := ADOQuery1Beginhour.AsString;
sbm := ADOQuery1beginMin.AsString;
seh := ADOQuery1Endhour.AsString;
sem := ADOQuery1EndMin.AsString;
sTeacher := ADOQuery1Teacher.Value;
Cancel;
Append;
AdoQuery1Term.Value := st;
AdoQuery1CourseCode.Value := sCourse ;
ADOQuery1DayWeek.AsString := sWeek;
ADOQuery1Beginhour.AsString := sbh ;
ADOQuery1beginMin.AsString := sbm ;
ADOQuery1Endhour.AsString := seh ;
ADOQuery1EndMin.AsString := sem ;
ADOQuery1Teacher.Value := sTeacher ;
AdoQuery1ClassCode.Value := sClassCode;
Post;
end;
end;
procedure TCourseTimeAssignForm.CreateTeacherItems;
begin
with DmMain.QueryPublic do
begin
Close;
Sql.Text := 'Select * from Teacher';
Open;
while not eof do
begin
DbCboTea.Items.Add(FieldByName('TeacherName').Asstring) ;
Next;
end;
end;
with DmMain.QueryPublic do
begin
Close;
Sql.Text := 'Select * from Term order by TermCode';
Open;
while not eof do
begin
DBComTerm.Items.Add(FieldByName('TermCaption').Asstring) ;
Next;
end;
end;
end;
{ TSNode }
constructor TSNode.Create(ABH: string);
begin
BH := Abh;
end;
procedure TCourseTimeAssignForm.FormDestroy(Sender: TObject);
var
I: Integer;
begin
for I := 0 to tv.Items.Count - 1 do
TsNode(tv.Items[I].Data).Free;
end;
procedure TCourseTimeAssignForm.tvClick(Sender: TObject);
var
sCode,sTerm,sTeacher,sClass: string;
begin
inherited;
if tv.Selected = nil then Exit;
if (tv.Selected.Level=0) then
sTerm := GetBh(Tv.Selected);
if (tv.Selected.Level=1) then
sTeacher := GetBh(Tv.Selected);
if (tv.Selected.Level=2) then
sClass := GetBh(Tv.Selected);
if tv.Selected.Level = 0 then
sCode := 'select * from CourseTimeAssign where Term='+QuotedStr(sTerm);
if tv.Selected.Level = 1 then
sCode := 'select * from CourseTimeAssign where Term='+QuotedStr(sTerm)+ ' and Teacher='+QuotedStr(sTeacher);
if tv.Selected.Level = 2 then
sCode := 'select * from CourseTimeAssign where Term='+QuotedStr(sTerm)+ ' and Teacher='+QuotedStr(sTeacher)+ ' and ClassCode='+QuotedStr(sClass);
with AdoQuery1 do
begin
Close;
Sql.Text := sCode;
Open;
end;
end;
procedure TCourseTimeAssignForm.SpeedButton1Click(Sender: TObject);
var
bh,mc,sClassCode: string;
begin
inherited;
// if not Checked then Exit;
if GetBMH2(bh,mc) then
begin
bh := bh + ',';
Caption := bh;
repeat
sClassCode := copy(bh,1,pos(',',bh)-1);
AppendRecordToAdo(sClassCode);
bh := copy(bh,pos(',',bh)+1,Length(bh)-pos(',',bh));
until Length(bh) = 0 ;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -