⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 studentfrm.pas

📁 delphi 编制的服务器程序
💻 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 + -