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

📄 classselectfrm.pas

📁 delphi 编制的服务器程序
💻 PAS
字号:
unit ClassSelectFrm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ChildFrm, DB, ADODB, ComCtrls, StdCtrls, Buttons, ExtCtrls,
  Menus, ImgList;

type
  TMonitorNode = class
  public
    BH: string;
    MC: string;
    Constructor Create(ABH: string);
  end;

  TClassSelectForm = class(TChildForm)
    pnlClient: TPanel;
    pnlBottom: TPanel;
    tv: TTreeView;
    Bevel1: TBevel;
    Panel1: TPanel;
    BitBtnOk: TBitBtn;
    BitBtnCancel: TBitBtn;
    ImageListTree: TImageList;
    PopupMenu1: TPopupMenu;
    miAllClose: TMenuItem;
    N2: TMenuItem;
    qryPublic: TADOQuery;
    procedure BitBtnOkClick(Sender: TObject);
    procedure BitBtnCancelClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    BH,MC: string;
    function  AddChildNode(tv: TTreeView; Node: TTreeNOde;
                      Code,Name: string): TTreeNode;
    function GetProFessName(sCode: string):string;


  public
    { Public declarations }
    procedure CreateTree;
  end;

var
  ClassSelectForm: TClassSelectForm;

  function GetBMH(var BMBH,BMMC: string): boolean;
  function GetBMBHShare(var BMBH,BMMC: string): boolean;
implementation

uses MainDm, PublicFunc;

{$R *.DFM}

{ TBMForm }


function SunRight(Source: string; Len: Integer): string;
begin
  Result := Copy(Source,Length(Source)-len+1,Len);
end;

function GetBMBHShare(var BMBH,BMMC: string): boolean;
begin
  Result := False;
  if ClassSelectForm = nil then
  begin
    ClassSelectForm:= TClassSelectForm.Create(Application);
    ClassSelectForm.CreateTree;
  end;

  if ClassSelectForm.SHowModal = mrOk then
  begin
    BMBH := ClassSelectForm.BH;
    BMMC := ClassSelectForm.MC;
    BMMC := SunRight(BMMC,Length(bmMC)-Length(bmBH)-1);
    Result := True;
  end;
end;

function GetBMH(var BMBH,BMMC: string): boolean;
var
  ClassSelectForm: TClassSelectForm;
begin
  Result := False;
  ClassSelectForm:= TClassSelectForm.Create(Application);
  ClassSelectForm.CreateTree;

  if ClassSelectForm.SHowModal = mrOk then
  begin
    BMBH := ClassSelectForm.BH;
    BMMC := ClassSelectForm.MC;
    BMMC := SunRight(BMMC,Length(BMMC)-Length(BMBH)-1);

    Result := True;
  end;
  ClassSelectForm.Free;
end;

{ TBMNode }
constructor TMonitorNode.Create(ABH: string);
begin
  BH:= ABH;
end;

//取结点的部门号
function GetBMBH(Node: TTreeNode): string;
begin
  if Node = nil then Result := ''
  else Result := TMonitorNode(Node.Data).BH;
end;


//根据SQL,和父结点,生成树
procedure TClassSelectForm.CreateTree;
var
  sCode,sGrade,sProfess,preGrade,preProfess,sProFessName,sName: string;
  First1,second: TTreeNode;
begin
  //
  with qryPublic 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;

//增加子结点
function TClassSelectForm.AddChildNode(tv: TTreeView; Node: TTreeNOde;
                      Code,Name: string): TTreeNode;
var
  child: TTreeNode;
begin
  child := tv.Items.AddChild(Node,Code+' '+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 TClassSelectForm.BitBtnOkClick(Sender: TObject);
begin
  if tv.Selected <> nil then
  begin
    BH := GetBMBH(tv.Selected);
    MC := tv.Selected.Text;
  end;
  if Length(Bh)<>8 then
  begin
    MessageBoxInfo('请选取班级结点!');
    Exit;
  end;
  ModalResult:= mrOk;
end;

procedure TClassSelectForm.BitBtnCancelClick(Sender: TObject);
begin
  Close;
end;



procedure TClassSelectForm.FormDestroy(Sender: TObject);
var
  I: Integer;
begin
  for I := 0 to tv.Items.Count - 1 do
  TMonitorNode(tv.Items[I].Data).Free;
end;

function TClassSelectForm.GetProFessName(sCode: string): string;
begin
  Result := '';
  with DmMain.QueryPublic  do
  begin
    Close;
    Sql.Text := 'select * from Professional where ProfessionalCode='+QuotedStr(sCode);
    Open;
    Result := FieldByName('professionalName').AsString;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -