📄 classselectfrm.~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 + -