📄 studentfrm.pas
字号:
unit StudentFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DbChildFrm, ComCtrls, DB, ADODB, ImgList, StdCtrls, Grids,
DBGrids, Buttons, ExtCtrls, DBCtrls, Mask, ExtDlgs,Jpeg;
type
TMonitorNode = class
public
BH: string;
MC: string;
Constructor Create(ABH: string);
end;
TStudentForm = class(TDbChildForm)
tv: TTreeView;
ADOQuery1StudentCode: TWideStringField;
ADOQuery1StudentName: TWideStringField;
ADOQuery1ClassCode: TWideStringField;
ADOQuery1LoginPass: TWideStringField;
ADOQuery1photo: TBlobField;
ADOQuery2: TADOQuery;
ADOQuery1ClassCaption: TStringField;
ADOQuery1sex: TWideStringField;
ADOQuery1telephone: TWideStringField;
Panel3: TPanel;
Label1: TLabel;
Label2: TLabel;
Label4: TLabel;
Label8: TLabel;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit4: TDBEdit;
DBLookupComboBox1: TDBLookupComboBox;
Label3: TLabel;
Label5: TLabel;
DBEdit5: TDBEdit;
Label7: TLabel;
DBComboBox1: TDBComboBox;
ImageListTree: TImageList;
ADOQuerygrade: TADOQuery;
ADOQuerypro: TADOQuery;
Splitter1: TSplitter;
spAuto: TSpeedButton;
ODFile: TOpenPictureDialog;
Panel4: TPanel;
DBImage1: TDBImage;
Label6: TLabel;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
Image1: TImage;
ADOQuery1Identify: TWideStringField;
DBComboBox2: TDBComboBox;
procedure FormDestroy(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure tvClick(Sender: TObject);
procedure ADOQuery1AfterInsert(DataSet: TDataSet);
procedure spAutoClick(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure sbaddClick(Sender: TObject);
procedure sbmodifyClick(Sender: TObject);
procedure sbsaveClick(Sender: TObject);
procedure sbcancelClick(Sender: TObject);
procedure FormCreate(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
StudentForm: TStudentForm;
procedure CallStudentForm;
implementation
uses MainDm, DialogFrm1, PublicFunc;
{$R *.dfm}
procedure CallStudentForm;
begin
if StudentForm = nil then
StudentForm := TStudentForm.Create(Application);
StudentForm.ShowModal;
StudentForm.Free;
StudentForm := nil;
end;
function GetBH(Node: TTreeNode): string;
begin
if Node = nil then Result := ''
else Result := TMonitorNode(Node.Data).BH;
end;
{ TMonitorNode }
constructor TMonitorNode.Create(ABH: string);
begin
bh := Abh;
end;
function TStudentForm.AddChildNode(tv: TTreeView; Node: TTreeNOde; Code,
Name: string): TTreeNode;
var
child: TTreeNode;
begin
child := tv.Items.AddChild(Node,Name);
child.Data := TMonitorNode.Create(Code);
case Length(Code) of
4: child.ImageIndex := 0;
2: child.ImageIndex := 1;
8: child.ImageIndex := 2;
end;
child.SelectedIndex := Child.ImageIndex;
Result := child;
end;
procedure TStudentForm.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); //专业
AddChildNode(tv,Second,sCode,sName); //班级
end
else
if sProfess <> preProfess then
begin
Second := AddChildNode(tv,First1,sProfess,sProFessName);
AddChildNode(tv,Second,sCode,sName);
end
else
AddChildNode(tv,Second,sCode,sName);
Next;
preGrade := sGrade;
preProfess := sProfess;
end;
end;
end;
procedure TStudentForm.FormDestroy(Sender: TObject);
var
I: Integer;
begin
for I := 0 to tv.Items.Count - 1 do
TMonitorNode(tv.Items[I].Data).Free;
end;
procedure TStudentForm.FormShow(Sender: TObject);
begin
inherited;
CreateClassTree;
end;
function TStudentForm.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;
procedure TStudentForm.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 Student where StudentCode like '+QuotedStr(sCode+'%');
Open;
end;
end;
procedure TStudentForm.ADOQuery1AfterInsert(DataSet: TDataSet);
begin
inherited;
AdoQuery1LoginPass.Value := '123456';
AdoQuery1Identify.Value := '学生';
AdoQuery1Sex.Value := '女';
end;
procedure TStudentForm.spAutoClick(Sender: TObject);
var
profess,people: string;
coun,i: Integer;
begin
inherited;
if not CallDialogForm(profess,people) then Exit;
try
coun := StrToint(People);
except
Exit;
end;
profess := copy(profess,pos('|',profess)+1,Length(profess)-pos('|',profess));
AdoQuery1.Cancel;
for i := 1 to Coun do
begin
if not AdoQuery1.Locate('StudentCode',Profess+IntToStrEx(i,2),[]) then
begin
ADoQuery1.Append;
AdoQuery1StudentCode.Value := Profess+IntToStrEx(i,2);
AdoQuery1StudentName.Value := 'XXX';
AdoQuery1ClassCode.Value := Profess;
end;
end;
try
if AdoQuery1.State in [DsEdit,DsInsert] then AdoQuery1.Post;
except
end;
end;
procedure TStudentForm.SpeedButton2Click(Sender: TObject);
var
JPeg: TJPegImage;
begin
JPeg := TJPegImage.Create;
if odFile.Execute then
begin
JPeg.LoadFromFile(odFile.FileName);
Image1.Picture:=nil;
Image1.Picture.Assign(JPeg);
TBlobField(AdoQuery1.FieldbyName('photo')).LoadFromFile(odFile.FileName);
end;
JPeg.Free;
end;
procedure TStudentForm.sbaddClick(Sender: TObject);
begin
inherited;
spAuto.Enabled := True;
if (tv.Selected = nil) or (tv.Items.Count = 0) then Exit;
if tv.Selected.Level = 2 then
AdoQuery1ClassCode.Value := GetBh(Tv.Selected);
end;
procedure TStudentForm.sbmodifyClick(Sender: TObject);
begin
inherited;
spAuto.Enabled := True;
end;
procedure TStudentForm.sbsaveClick(Sender: TObject);
begin
inherited;
spAuto.Enabled := False;
end;
procedure TStudentForm.sbcancelClick(Sender: TObject);
begin
inherited;
spAuto.Enabled := False;
end;
procedure TStudentForm.FormCreate(Sender: TObject);
begin
inherited;
spAuto.Enabled := False;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -