预览加载中,请您耐心等待几秒...
1/5
2/5
3/5
4/5
5/5

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

树形目录在PB中的实现与应用 1.引言在管理信息系统的开发中,经常需要获取本地计算机中的树形目录结构和相应的文件信息,如进行目录的选择和特殊文件的选取,在PB中并没有提供专门的树形目录对象,这样就需要程序开发人员自己来实现相应的树形目录。本文针对这种情况,提供了一种用纯PB代码实现树形结构的方法。2.PB中树形目录的实现方法PB中的ListBox列表框控件提供了显示目录和文件的能力。在程序中可以利用PB的树形控件TreeView动态生成树形目录结构。我们使用ListBox控件的函数DirList来实现,函数DirList以满足条件的文件名填充列表框的列表项,其使用方法如下:listboxname.DirList(文件模式,文件类型)其中文件类型的值如下所示: 0可读/可写文件2隐含文件16子目录16384驱动器1只读文件4系统文件32归档文件32768除可读/可写外所有类型在程序中可将几种类型的值相加以获取相应的文件或目录信息。下面结合一个实例介绍树形目录的实现方法。通过树形目录可以获取计算机中的任意目录,然后显示需要显示的文件(本例中显示浏览器可以查看的文件类型:htm,html,swf,gif,jpg,txt等)。程序中主要使用的控件如下所示: 控件名类型说明tv_dirTreeView显示树形目录lb_fileListBox显示相应目录中的文件ole_dispMicrosoftWeb浏览器控件对选定文件进行浏览lb_dirListBox显示驱动器信息lb_nextListBox显示当前目录下级目录信息程序具体实现分成以下几个步骤:第一步:在tv_dir的constructor事件中生成所有驱动器信息,代码如下: //显示所有驱动器,并加入目录树中treeviewitemltvi_newintli_count,iStringls_DriverTypelb_dir.DirList("",16384)li_count=lb_dir.totalitems()IFli_count>0thenfori=1toli_countltvi_New.Label=lb_dir.Text(i)ltvi_New.Data=i-1ltvi_New.Children=TRUE//根据驱动器类型设置图标ls_DriverType=uf_drivetype(lb_dir.Text(i))//函数uf_drivetype用来获取驱动器类型,根据类型设置图标Choosecasels_DriverTypecase"REMOVABLE"ltvi_New.PictureIndex=5ltvi_New.SelectedPictureIndex=5CASE"FIXED"ltvi_New.PictureIndex=1ltvi_New.SelectedPictureIndex=2CASE"CDROM"ltvi_New.PictureIndex=6ltvi_New.SelectedPictureIndex=6ENDCHOOSEThis.InsertItemlast(0,ltvi_New)nextThis.selectitem(1)Endif第二步,在tv_dir的itempopulate事件中生成相应目录的下级目录信息: Stringls_Driver,ls_DataIntli_level,li_num,li_i,li_new_levelTreeViewItemltvi_choosetreeviewitemltvi_new,ltvi_parentlongll_handle//获取当前所选目录tv_dir.GetItem(handle,ltvi_choose)li_Level=ltvi_Choose.Levellb_dir.dirlist("",0)//IFli_level=1Then//选择目录树中的驱动器ls_Driver=Mid(ltvi_choose.label,3,1)lb_dir.DirList(ls_Driver+":\",16+32768)//显示当前目录子目录信息li_num=lb_Dir.totalitems()Forli_i=1toli_numls_Data=lb_dir.Text(li_i)IfMid(ls_data,1,1)="["Thenltvi_New.Label=mid(ls_data,2,len(ls_data)-2)ltvi_New.Data=1LB_next.dirlist(ls_driver+":\"+ltvi_New.Label,16+32768)iflb_next.totalitems()>1Thenltvi_New.Children=TRUEelseltvi_New.Children=FalseEndifltvi_New.Pic