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