配色: 字号:
TreeView控件不同层次节点的设计与运用
2022-05-10 | 阅:  转:  |  分享 
  
TreeView控件不同层次节点的设计与运用一、设计界面:二、运行界面:三、有关代码1、Form1.Init事件代码Thisform.Gen
Tree(1)2、Form1.Load事件代码PUBLICDataPath,TempPathDataPath=SYS(5)+S
YS(2003)+"\Data\"IF!DIRECTORY(DataPath)MD(DataPath)ENDIFTempPa
th=SYS(5)+SYS(2003)+"\Temp\"IF!DIRECTORY(TempPath)MD(TempPath)
ENDIFCLOSEdataUSE(DataPath+"jsrkb20190101.dbf")ALIASjsrkb
IN0USE(DataPath+"kb20190101.dbf")ALIASrkbIN0USE(D
ataPath+"成绩汇总表.dbf")ALIAScjhzbIN0USE(DataPath+"干部信息汇总表.
dbf")ALIASxxhzbIN0USE(DataPath+"jsxx.dbf")ALIASjsxx
IN03、Form1.UnLoad事件代码CLOSEDATABASES4、Form1.Gentree事件代码(新建方法
程序:Gentree)PARAMETERSScfsDOCASEcaseScfs=1thisform.olecontr
ol1.LINESTYLE=1THISform.olecontrol1.STYLE=7Thisform.OleControl1.N
odes.ClearSELECTdistinct年级FROMcjhzbintoCURSORtempSCA
N&&添加第一层节点:年级thisform.olecontrol1.Nodes.Add(,,''年级''+ALLTRIM(年级)
,年级)SELECTDISTINCT班级FROMcjhzbWHEREcjhzb.年级=TEMP.年级I
NTOCURSORTEMP1SELECTtemp1SCAN&&添加第二层节点:班级thisform.OleCon
trol1.Nodes.Add(''年级''+ALLTRIM(temp.年级),4,''班级''+ALLTRIM(temp.年级)+ALL
TRIM(班级),班级)SELECTdistinct性别FROMcjhzbWHEREcjhzb.年级=Te
mp.年级ANDcjhzb.班级=Temp1.班级INTOCURSORtemp2SELECTtemp2S
CAN&&添加第三层节点:性别thisform.olecontrol1.Nodes.Add(''班级''+ALLTRIM(Te
mp.年级)+ALLTRIM(temp1.班级),4,''性别''+ALLTRIM(Temp.年级)+ALLTRIM(temp1.班级
)+ALLTRIM(性别),性别)ENDSCANUSEINtemp2SELECTtemp1ENDSCANUSE
INtemp1SELECTtempENDSCANUSEINtempthisform.olecontrol1.ref
reshcaseScfs=2thisform.olecontrol1.LINESTYLE=1THISform.olecontro
l1.STYLE=7Thisform.OleControl1.Nodes.ClearSELECTdistinctnj,n
jdhFROMjsrkbintoCURSORtempORDERBYnjdhScan&&添加第一
层节点:年级thisform.olecontrol1.Nodes.Add(,,''nj''+ALLTRIM(nj),nj)SELECT
DISTINCTbjFROMjsrkbWHEREjsrkb.nj=TEMP.njINTOCURSOR
TEMP1SELECTTEMP1SCAN&&添加第二层节点:班级THISFORM.OLECONTROL1.Nodes
.Add(''nj''+ALLTRIM(temp.nj),4,''bj''+ALLTRIM(temp.nj)+ALLTRIM(bj),bj
)ENDSCANUSEINTEMP1SELECTTEMPENDSCANUSEINTEMPTHISFORM.OL
ECONTROL1.REFRESHcaseScfs=3thisform.olecontrol1.LINESTYLE=1THISf
orm.olecontrol1.STYLE=7Thisform.OleControl1.Nodes.ClearSELECTDI
STINCT姓名FROMxxhzbINTOCURSORtempSCAN&&添加节点:姓名thisform
.olecontrol1.nodes.add(,,''姓名''+ALLTRIM(姓名),姓名)ENDSCANTHISFORM.OLE
CONTROL1.REFRESHENDCASE5、Olecontrol1.NodeClick事件代码ActiveX控件
事件LPARAMETERSnodeDOCASECASEthisform.optiongroup1.Value=1
wjm=DataPath+"cjtjmb.doc"PUBLICcnj,cbj,i,j,k,m,noWo
rd=CREATEOBJECT("word.application")oWord.VISIBLE=.T.SELECTcjhzb
LocateFORALLTRIM(cjhzb.年级)=ALLTRIM(Node.Parent.parent.text)
ANDALLTRIM(cjhzb.班级)=ALLTRIM(Node.parent.text)ANDALLTRIM(cjh
zb.性别)=ALLTRIM(Node.text)IFFOUND()cnj=ALLTRIM(Node.Parent.paren
t.text)cbj=ALLTRIM(Node.parent.text)cxb=ALLTRIM(Node.text)WAIT
WINDOW''正在生成"''+cnj+cbj+cxb+''"生的成绩统计表……''NOWAITSELECT
FROMcjhzbWHERE年级=cnjAND班级=cbjAND性别=cxbINTO
CURSORtemp3SELECTtemp3oTab=oWord.APPLICATION.Documents.OPEN
(wjm)oWord.SELECTIONoWord.SELECTION.insertafter(ALLTRIM("&cnj&cbj
&cxb"+"生"))SELECTtemp3FORi=1TORECCOUNT()GOiIFi>30
oTab.Tables(1).Cell(i+1-30,5).Range.InsertAfter(temp3.姓名)oTab.T
ables(1).Cell(i+1-30,6).Range.InsertAfter(temp3.语文)oTab.Tables(1
).Cell(i+1-30,7).Range.InsertAfter(temp3.数学)oTab.Tables(1).Cell(
i+1-30,8).Range.InsertAfter(temp3.英语)ELSEoTab.Tables(1).Cell(i+
1,1).Range.InsertAfter(temp3.姓名)oTab.Tables(1).Cell(i+1,2).Range
.InsertAfter(temp3.语文)oTab.Tables(1).Cell(i+1,3).Range.InsertAft
er(temp3.数学)oTab.Tables(1).Cell(i+1,4).Range.InsertAfter(temp3.英
语)ENDIFENDFORSELECTtemp3USESELECTcjhzbWAITCLEARFileName
=TempPath+cnj+cbj+cxb+"生成绩统计表.doc"oWord.Documents(1).SAVEAS(Filen
ame)oWord.ActiveDocument.CLOSEoWord.QUIT()MESSAGEBOX("成绩统计表WORD文档
生成完毕!",64,"提示")ENDIFthisform.RefreshCASEthisform.optiongroup1
.Value=2wjm=DataPath+"bjkbmb1.doc"PUBLICcnj,cbj,bzr,cxkmc,
i,j,kWordApp=CREATEOBJECT("Word.application")WordApp.Visible=
.t.SELECT0SELECTjsrkbLOCATEFORALLTRIM(jsrkb.NJ)==ALLTRIM(no
de.parent.Text)ANDALLTRIM(jsrkb.BJ)==ALLTRIM(Node.text)IFFOUN
D()cnj=ALLTRIM(Node.parent.Text)cbj=ALLTRIM(Node.text)bzr=ALLTRIM
(jsrkb.班会)WAITWINDOW''正在生成"''+cnj+cbj+''"的日课表…''NOWAITSEL
ECTfromkb20190101wherenj=cnjandbj=cbjintocursorbjkbSE
LECTfromrkbwherenj=cnjandbj=cbjintocursorbjkb
SELECTbjkbWordTable=WordApp.Application.Documents.Open(wjm)&&关
键wordapp.selectionwordapp.Selection.InsertAfter(ALLTRIM("&cnj&cbj
"))&&在模板文件标题行插入年级、班级WORDAPP.ActiveDocument.Content.Find.Execute(
''ABCDEF'',.F.,.F.,.F.,.F.,.F.,.F.,.F.,.F.,''&bzr'',2)SELECTbjkbFOR
i=1TO5FORj=1TO6cxkmc=ALLTRIM(EVALUATE("bjkb."+"zhou"+
TRANSFORM(i)+TRANSFORM(j)))WordTable.Tables.item(1).Cell(j2,i+2)
.Range.Text=cxkmcSELECTjsrkbFORk=1toFCOUNT()IFFIELD(k)=
cxkmcWordTable.Tables.item(1).Cell(j2+1,i+2).Range.Text=EVALUATE
(FIELD(k))ENDIFENDFORENDFORendforSELECTbjkbUSESELECTjsrkbWAIT
CLEARFileName=TempPath+cnj+cbj+"课程表.doc"WordApp.ActiveDocu
ment.PrintOutWordApp.Documents(1).SaveAs(filename)&&自动保存文件WordA
pp.ActiveDocument.Closewordapp.application.quitmessagebox("班级日课表的
WORD文档生成完毕!",64,"提示:")ENDIFthisform.refreshCASEthisform.optiong
roup1.Value=3wjm=DataPath+"干部信息登记表.doc"SELECTxxhzbLOCATEFOR
ALLTRIM(xxhzb.姓名)==ALLTRIM(Node.Text)IFFOUND()cxm=ALLTRIM(Node
.Text)FileName=TempPath+cxm+"信息登记表.doc"oword=CREATEOBJECT("word.
application")oDoc=oWord.Documents.open(wjm)oTable=oWord.ActiveDoc
ument.Tables(1)SELECTjsxxSCANcRow=VAL(GETWORDNUM(jsxx.位置,1,'','')
)cCol=VAL(GETWORDNUM(jsxx.位置,2,'',''))cvalue=jsxx.字段内容zd=xxhzb.&cva
lueoTable.cell(cRow,cCol).range.Insertafter(IIF(jsxx.类型=''D'',DTOC(zd),zd))ENDSCANoWord.ActiveDocument.SaveAs(FileName)oDoc.closeRELEASEoWordENDIFWAITclearthisform.RefreshENDCASE6、Optiongroup1.Click事件代码Thisform.GenTree(This.Value)7、Optiongroup1.Option1.Caption:成绩汇总表8、Optiongroup1.Option2.Caption:班级课程表9、Optiongroup1.Option3.Caption:干部信息表四、说明:1、在当前目录下新建文件夹Data,用于存放表文件和模板文件。2、在当前目录下新建文件夹Temp,用于存放程序生成的临时文件。
献花(0)
+1
(本文系王咸美首藏)