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

📄 monitorfrm.~pas

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