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

📄 classcheckselectfrm.~pas

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

interface

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

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

  TClassCheckSelectForm = class(TChildForm)
    pnlClient: TPanel;
    pnlBottom: TPanel;
    tv: TTreeView;
    Bevel1: TBevel;
    Panel1: TPanel;
    BitBtnOk: TBitBtn;
    BitBtnCancel: TBitBtn;
    ImageListTree: TImageList;
    qryPublic: TADOQuery;
    CheckListBox1: TCheckListBox;
    procedure BitBtnOkClick(Sender: TObject);
    procedure BitBtnCancelClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure tvClick(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
  ClassCheckSelectForm: TClassCheckSelectForm;

  function GetBMH2(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 ClassCheckSelectForm = nil then
  begin
    ClassCheckSelectForm:= TClassCheckSelectForm.Create(Application);
    ClassCheckSelectForm.CreateTree;
  end;

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

function GetBMH2(var BMBH,BMMC: string): boolean;
var
  ClassCheckSelectForm: TClassCheckSelectForm;
begin
  Result := False;
  ClassCheckSelectForm:= TClassCheckSelectForm.Create(Application);
  ClassCheckSelectForm.CreateTree;

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

    Result := True;
  end;
  ClassCheckSelectForm.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 TClassCheckSelectForm.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 TClassCheckSelectForm.AddChildNode(tv: TTreeView; Node: TTreeNOde;
                      Code,Name: string): TTreeNode;
var
  child: TTreeNode;
begin
//  child := tv.Items.AddChild(Node,Code+' '+Name);
  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 TClassCheckSelectForm.BitBtnOkClick(Sender: TObject);
var
  s : string;
  i: Integer;
begin
  for i := 0 to CheckListBox1.Items.Count - 1 do
  begin
    if CheckListBox1.Checked[i] then
    begin
      s := CheckListBox1.Items.Strings[i];
      s := copy(s,pos('|',s)+1,Length(s)-pos('|',s));
      bh := bh + ',' + s;
    end;
  end;
  bh := copy(bh,2,Length(bh)-1);
  if Length(Bh)=0 then
  begin
    MessageBoxInfo('请选取相应班级!');
    Exit;
  end;
  ModalResult:= mrOk;
end;

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



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

function TClassCheckSelectForm.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;

procedure TClassCheckSelectForm.tvClick(Sender: TObject);
var
 sClassCode:string;
begin
  inherited;
  if tv.Selected = nil then Exit;
  if tv.Selected.Level <= 0 then Exit;
  CheckListBox1.Items.Clear;
  sClassCode := GetBmbh(tv.Selected.Parent)+GetBmbh(tv.Selected);
  with DmMain.QueryPublic do
  begin
    Close;
    Sql.Text := 'select * from monitor where ClassCode like '+QuotedStr(sClassCode+'%')+ ' order by ClassCode';
    Open;
    while not eof do
    begin
      CheckListBox1.Items.Add(FieldByName('ClassCaption').AsString+'                                   |'+FieldByName('ClassCode').AsString);
      Next;
    end;

  end;
end;

end.

⌨️ 快捷键说明

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