📄 monitorfrm.~pas
字号:
unit MonitorFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DbChildFrm, DB, ADODB, ImgList, StdCtrls, Grids, DBGrids,
ComCtrls, Buttons, ExtCtrls, DBCtrls, Mask;
type
TProNode = class
public
BH: string;
MC: string;
Constructor Create(ABH: string);
end;
TMonitorForm = class(TDbChildForm)
ADOQuery1ClassCaption: TWideStringField;
ADOQuery1EnterYear: TWideStringField;
ADOQuery1studentNums: TSmallintField;
ADOQuery1professionalCode: TWideStringField;
ADOQuery2: TADOQuery;
ADOQuery1professname: TStringField;
Label1: TLabel;
DBEdit1: TDBEdit;
Label2: TLabel;
DBEdit2: TDBEdit;
Label3: TLabel;
DBEdit3: TDBEdit;
Label4: TLabel;
DBEdit4: TDBEdit;
Label5: TLabel;
DBLookupComboBox1: TDBLookupComboBox;
ADOQuery1ClassCode: TWideStringField;
btnAuto: TButton;
tv: TTreeView;
Splitter1: TSplitter;
ImageList2: TImageList;
ADOQueryGrade: TADOQuery;
ADOQueryPro: TADOQuery;
procedure btnAutoClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure tvClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure sbaddClick(Sender: TObject);
procedure sbmodifyClick(Sender: TObject);
procedure sbsaveClick(Sender: TObject);
procedure sbcancelClick(Sender: TObject);
private
{ Private declarations }
procedure CreateClassTree;
//产生专业一级
function AddChildNode(tv: TTreeView; Node: TTreeNOde;
Code,Name: string): TTreeNode;
function GetProFessName(sCode: string):string;
public
{ Public declarations }
end;
var
MonitorForm: TMonitorForm;
procedure CallMonitorForm;
implementation
uses MainDm,Publicfunc;
{$R *.dfm}
procedure CallMonitorForm;
begin
if MonitorForm = nil then
MonitorForm := TMonitorForm.Create(Application);
MonitorForm.ShowModal;
MonitorForm.Free;
MonitorForm := nil;
end;
function GetBH(Node: TTreeNode): string;
begin
if Node = nil then Result := ''
else Result := TProNode(Node.Data).BH;
end;
function TMonitorForm.AddChildNode(tv: TTreeView; Node: TTreeNOde; Code,
Name: string): TTreeNode;
var
child: TTreeNode;
begin
child := tv.Items.AddChild(Node,Name);
child.Data := TProNode.Create(Code);
case Child.Level of
0: child.ImageIndex := 0;
1: child.ImageIndex := 1;
end;
child.SelectedIndex := Child.ImageIndex;
Result := child;
end;
procedure TMonitorForm.btnAutoClick(Sender: TObject);
var
i,Coun: Integer;
InputString,sYear,sCode,sClassCode: string;
begin
inherited;
sYear := AdoQuery1EnterYear.Value;
if SYear = '' then
begin
MessageboxInfo('请先指明入学年度!');
Exit;
end;
sCode := AdoQuery1ProfessionalCode.Value;
if sCode = '' then
begin
MessageboxInfo('请指明该班所学专业!');
Exit;
end;
CallAskClassCountForm(Coun);
AdoQuery1.Cancel;
for i := 1 to Coun do
begin
sClassCode := sYear+sCode+IntToStrEx(i,2);
if not AdoQuery1.Locate('ClassCode',sClassCode,[]) then
begin
AdoQuery1.Append;
AdoQuery1ClassCode.Value := sClassCode;
AdoQuery1Enteryear.Value := sYear;
AdoQuery1ProfessionalCode.Value := sCode;
try
if AdoQuery1.State in [DsInsert,DsEdit] then AdoQuery1.Post;
except
end;
end;
end;
try
if AdoQuery1.State in [DsInsert,DsEdit] then AdoQuery1.Post;
except
end;
PageControl1.ActivePageIndex := 0;
end;
procedure TMonitorForm.CreateClassTree;
var
sCode,sGrade,sProfess,preGrade,preProfess,sProFessName,sName: string;
First1,second: TTreeNode;
begin
with ADOQuerygrade do
begin
Close;
Sql.Text := 'select * from Monitor order by ClassCode';
open;
preGrade := '';
preProfess := '';
while not eof do
begin
sCode := FieldByName('ClassCode').Asstring;
sName := FieldByName('ClassCaption').Asstring;
sGrade := Copy(sCode,1,4);
sProfess := Copy(sCode,5,2);
sProFessName := GetProFessName(sProfess);
if sGrade <> preGrade then
begin
First1 := AddChildNode(tv,nil,sGrade,sGrade); //年级
Second := AddChildNode(tv,First1,sprofess,sProFessName); //专业
end
else
if sProfess <> preProfess then
Second := AddChildNode(tv,First1,sProfess,sProFessName);
Next;
preGrade := sGrade;
preProfess := sProfess;
end;
end;
end;
function TMonitorForm.GetProFessName(sCode: string): string;
begin
Result := '';
with ADOQuerypro do
begin
Close;
Sql.Text := 'select * from Professional where ProfessionalCode='+QuotedStr(sCode);
Open;
Result := FieldByName('professionalName').AsString;
end;
end;
{ TProNode }
constructor TProNode.Create(ABH: string);
begin
Bh := aBh;
end;
procedure TMonitorForm.FormDestroy(Sender: TObject);
var
I: Integer;
begin
for I := 0 to tv.Items.Count - 1 do
TProNode(tv.Items[I].Data).Free;
end;
procedure TMonitorForm.tvClick(Sender: TObject);
var
sCode: string;
begin
inherited;
if tv.Items.Count = 0 then Exit;
if tv.Selected <> nil then
sCode := GetBh(Tv.Selected);
if tv.Selected.Level = 1 then
sCode := GetBh(Tv.Selected.Parent)+ GetBh(Tv.Selected);
with AdoQuery1 do
begin
Close;
Sql.Text := 'select * from Monitor where ClassCode like '+QuotedStr(sCode+'%');
Open;
end;
end;
procedure TMonitorForm.FormShow(Sender: TObject);
begin
inherited;
CreateClassTree;
end;
procedure TMonitorForm.FormCreate(Sender: TObject);
begin
inherited;
btnAuto.Enabled := False;
end;
procedure TMonitorForm.sbaddClick(Sender: TObject);
begin
inherited;
btnAuto.Enabled := True;
end;
procedure TMonitorForm.sbmodifyClick(Sender: TObject);
begin
inherited;
btnAuto.Enabled := True;
end;
procedure TMonitorForm.sbsaveClick(Sender: TObject);
begin
inherited;
btnAuto.Enabled := False;
end;
procedure TMonitorForm.sbcancelClick(Sender: TObject);
begin
inherited;
btnAuto.Enabled := False;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -