pb listbox listview控件 实现目录显示,可过滤不想要的文件,实现checkbox选择,但是效果一般,看来listview控件不太好用,实现效果困难(序号|文件名|...|checkb

文章讲述了在PowerBuilder(PB)中使用pblistboxlistview控件和datawindow控件来显示目录及文件,同时实现文件过滤和checkbox选择功能。作者遇到的问题是listview控件在实现特定效果时存在困难,而datawindow控件虽然操作简便,但显示效果不尽如人意。代码示例展示了如何使用这两个控件进行目录选择和文件列表的创建。
摘要由CSDN通过智能技术生成

pb listbox listview控件 实现目录显示,可过滤不想要的文件,实现checkbox选择,但是效果一般,看来listview控件不太好用,实现效果困难(序号|文件名|...|checkbox)。
换回datawindow控件实现就好弄,记录下listview代码,但是有个问题,一直觉得datawindow控件显示效果不如listview控件(pb的listview显示效果和别的开发工具listview控件很像),效果在研究吧。
【选择目录代码】
long ll_item
long ll_items,ll_index, ll_cut =1
string ls_name, ls_filename,  ls_fname[]

int i = 0
//
string ls_path

//获取当前应用目录
ls_path = GetCurrentDirectory ()

GetFolder ("选择目录", ls_path)
ls_path = ls_path + "\"
//--------------------------------------------------------------------//
在窗口画板创建可现实控件listbox lb_filelist,获取目录文件
//

//lb_FileList.setredraw(false)
遍历结果直接显示到控件
//lb_FileList.DirList( ls_path + '*.*', 16, st_5)
row count
//ll_items = lb_FileList.totalitems()
控件没有数据
//IF ll_items= 0 THEN
// RETURN 0
//END IF
//
从控件获取 文件名
//for ll_index = 1 to ll_items
// ls_filename = lb_FileList.text(ll_index)
// //进入下轮循环 不执行后续语句
//    if right(ls_filename, 1)=']'  then
//   //删除目录
//   lb_FileList.deleteitem(ll_index)
//   //很好的处理计数器
//   ll_index = ll_index -1   
//    end if
//
//next
//
//lb_FileList.setredraw(true)
----------------------------------------------------------------------//

//创建动态控件获取目录文件列表
listbox lb_FileList_NoDisplay

OpenUserObject (lb_FileList_NoDisplay)

//遍历结果直接显示到控件
lb_FileList_NoDisplay.DirList( ls_path + '*.*', 16, st_5)
//row count
ll_items = lb_FileList_NoDisplay.totalitems()
//控件没有数据
IF ll_items= 0 THEN
 RETURN 0
END IF
//创建listview 列表项
listviewitem lvi_item
//清空listview
lv_filelist.deletecolumns( )
lv_filelist.deleteitems( )

lv_filelist.view = ListViewReport!

lv_filelist.addcolumn( "", Center!, 300)
lv_filelist.addcolumn( "序号", Center!, 300)
lv_filelist.addcolumn( "文件名", Center!, 1200)

//从控件获取 文件名
for ll_index = 1 to ll_items
 ls_filename = lb_FileList_NoDisplay.text(ll_index)
 //进入下轮循环 不执行后续语句
    if right(ls_filename, 1)=']'  then  
   continue
    end if
  
 i = i+1
 lvi_item.label = ls_filename
 lvi_item.data = ls_filename
 lv_filelist.additem( lvi_item)
next

closeuserobject(lb_FileList_NoDisplay)

【更新应用】
Int li_index
ListViewItem llv_item
string ls_tmp

For li_index = 1 To lv_filelist.TotalItems()
      lv_filelist.GetItem (li_index,llv_item)
//  If llv_item.label Then
//    MessageBox("提示",String(li_index) + "是选中的~r~n标号:" + &
//    llv_item.label + "数据:" + String(llv_item.data))
//  End If
  ls_tmp += string(llv_item.statepictureindex)
  ls_tmp += "|"
     
Next

messagebox( "",  ls_tmp)

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值