backstyle=0,;
caption=\选择节点\height=20,; left=159,; top=271,; width=71,; tabindex=9,;
forecolor=rgb(0,0,255),; name=\
ADD OBJECT cmdnewnode AS commandbutton with; top=79,; left=483,; height=26,; width=82,;
fontbold=.t.,; fontname=\宋体\fontsize=11,;
caption=\新根节点\enabled=.t.,; tabindex=2,;
forecolor=rgb(255,0,0),; name=\
ADD OBJECT cmddeletenode AS commandbutton with; top=136,; left=483,; height=26,; width=82,;
fontbold=.t.,; fontname=\宋体\fontsize=11,;
caption=\删 除\enabled=.t.,; tabindex=4,;
forecolor=rgb(255,0,0),; name=\
ADD OBJECT cmdloaddbf AS commandbutton with; top=225,; left=483,; height=26,; width=82,;
fontbold=.t.,; fontname=\宋体\fontsize=11,;
caption=\从DBF调用\
enabled=.t.,; tabindex=7,;
forecolor=rgb(255,0,0),; name=\
ADD OBJECT cmdsavedbf AS commandbutton with; top=195,; left=483,; height=26,; width=82,;
fontbold=.t.,; fontname=\宋体\fontsize=11,;
caption=\存储到DBF\enabled=.t.,; tabindex=6,;
forecolor=rgb(255,0,0),; name=\
ADD OBJECT cmdclear AS commandbutton with; top=165,; left=483,; height=26,; width=82,;
fontbold=.t.,; fontname=\宋体\fontsize=11,;
caption=\清 除\enabled=.t.,; tabindex=5,;
forecolor=rgb(255,0,0),; name=\
ADD OBJECT cmdnewchild AS commandbutton with; top=107,; left=483,; height=26,; width=82,;
fontbold=.t.,; fontname=\宋体\fontsize=11,;
caption=\新子节点\enabled=.t.,; tabindex=3,;
forecolor=rgb(255,0,0),; name=\
ADD OBJECT cmdclose AS commandbutton with;
top=267,; left=485,; height=26,; width=80,;
fontbold=.t.,; fontname=\宋体\fontsize=11,;
caption=\关 闭\enabled=.t.,; tabindex=5,;
forecolor=rgb(255,0,0),; name=\
ADD OBJECT shape1 AS shape with; top=13,; left=11,; height=56,; width=548,; backstyle=0,; specialeffect=0,; name=\
ADD OBJECT label3 AS label with; top=24,; left=21,; height=40,; width=529,; fontbold=.t.,; fontname=\宋体\fontsize=10,; wordwrap=.t.,; tabindex=0,;
forecolor=rgb(0,0,255),; name=\
caption=\控件显示一个类似浏览器的界面。单击“新根节点”添加一个新项到该控件中。单击“新子节点”添加一个;
子节点到当前选择的节点上。可以单击“存储到DBF”将这些节点存储到一个DBF文件中。\
ADD OBJECT label4 AS label with; autosize=.t.,; top=7,; left=19,; height=19,; width=85,;
fontbold=.t.,; fontname=\宋体\
fontsize=11,; wordwrap=.t.,; tabindex=0,;
forecolor=rgb(255,0,0),; name=\caption=\操作说明\
*!*返回新节点的一个新关键字 PROCEDDURE newkey
cKey=this.cNextKey
this.cNextKey=allt(str(val(this.cNextKey)+1)+\ PRTURN cKey ENDPROC
PROCEDURE refreshcombo this.cboparent.clear
for i=1 to this.oletree.nodes.count
this.cboparent.addlistitem(this.oletree.nodes.item(i)).fullpath,i,1)
endfor ENDPROC
*!*检查确保该表具有存储或恢复一个轮廓所需要的字段 PROCEDURE verifytablestructure
LOCAL lafields[1,11],lnpos,laneeded[3],lncnt #DEFINE FIELD1_LOC\ #DEFINE FIELD2_LOC\ #DEFINE FIELD3_LOC\ laNeeded[1]=FIELD1_LOC laNeeded[2]=FIELD2_LOC laNeeded[3]=FIELD3_LOC
=AFIELDS(laFields,laNeeded[lnCnt]) FOR lnCnt=1 to alen(laNeeded)
lnPos=ASCAN(laFields,laNeeded[lnCnt]) IF lnPos=0 .or. laFields[lnPos+1]!='C'
#DEFINE TITLE_LOC \
#DEFINE MSG_LOC\ +chr(13)+chr(13)+FIELD1_LOC+;
chr(13)+FIELD2_LOC+chr(13)+FIELD3_LOC =messagebox(msg_loc,48+0+0,title_loc) return .f. ENDIF
ENDFOR return .t. ENDPROC
PROCEDURE opendbf
LPARAMETERS lcDBFNAME,llExclusive thisform.openedsuccessfully=.t. #DEFINE ERR_LOC \ IF !file (lcDBFNAME)
#DEFINE ERR1_LOC \ =messagebox(err1_loc,48+0+0,err_loc) return .f. ENDIF
lcAlias=substr(lcDBFName,rat(\ lcAlias=substr(lcAlias,1,at(\ IF llExclusive
use (lcDBFName) in 0 exclusive ENDIF
IF !use (lcAlias)
use (lcDBFName) in 0 shared ENDIF
select (lcAlias)
return thisform.openedsuccessfully ENDPROC
*!*基于选择的项来允许/废止相应的按钮 PROCEDURE checkbuttons o=thisform.oletree
IF isnull(o.selecteditem)then thisform.cmdnewchild.enabled=.f. thisform.cmdndeletenode.enabled=.f. ELSE
thisform.cmdnewchild.enabled=.T. thisform.cmdndeletenode.enabled=.T. ENDIF ENDPROC
PROCEDURE init
*!*用init 来检查OCX是否安装和装入
IF type(\return .f. ENDIF ENDPROC
PROCEDURE oletree.afterlabeledit LPARAMETERS cancel,newstring IF !isnull(newstring)
this.selecteditem.text=newstring thisform.refreshcombo