学会洒脱 发表于 2008-10-21 15:58:11

list列表项个数不确定问题(基本解决,还有个小问题)

各位大哥,小弟我又有新问题...
目前遇到一个下拉列表不确定的情况.
比如说下拉列表因为后台的值不同也就是不同的状态会有1-4个不等的列表项.

现在我需要考虑当某一列表项不存在时不会对该列表项进行操作,查看到了list_系列的函数,实在找不出合适的函数,麻烦各位帮我看看...

[ 本帖最后由 学会洒脱 于 2008-10-23 13:51 编辑 ]

学会洒脱 发表于 2008-10-22 09:23:32

有没有什么函数可以对当前下拉列表中是否存在某一列表项进行判断的?
实在找不到...

我写的不够明确..如果哪位大侠不明白.请指出来.我尽量描述的详细点...

lantianwei 发表于 2008-10-22 10:37:16

只要是标准的LIST就应该没什么问题的
你把所有LIST的函数列出来我看下

学会洒脱 发表于 2008-10-22 13:18:01

2.        list_activate_item ( list, item [, offset ] );激活列表里某一项
3.        list_check_info ( list, property, property_value );检查列表属性的值
4.        list_check_item ( list, item_num, item_content );检查列表某项的内容
例如:
if (list_check_item("Drinks",0, "Apple Juice")!=E_OK)
report_msg("the first drink should be apple juice");

5.        list_check_selected ( list, selected_items );检查选中的那项
6.        list_collapse_item ( list, item [, mouse_button ] );隐藏树型图里的选项
7.        list_deselect_item ( list, item [, mouse_button[, offset ]] );取消选定列表的某一项
8.        list_deselect_range ( list, item1, item2 [, offset ] );取消选定一定范围内的选项
9.        list_drag_item ( source_list, item [, mouse_button ] );拖动源列表的某个选项
10.        list_drop_on_item ( target_list, target_item );把一个对象关联到目标列表的选项
11.        list_expand_item ( list, item [, mouse_button ] );显示隐藏的树型图选项
12.        list_extend_item ( list, item [, button[, offset ] ] );往指定的列表里添加一个选项
13.        list_extend_multi_items ( list, item_list, [, mouse_button[, offset ] ] );添加多个选项
14.        list_extend_range ( list, item1, item2 [, button[, offset ] ] );添加一定范围的选项
15.        list_get_checked_items ( list, items, number );返回标记的选项的个数和值
16.        list_get_column_header ( listview_object, in_column_index, out_header_value );返回列表图的行标题
例如:list_get_column_header ("Contents of 'arch'",1,col_header);

17.        list_get_info ( list, property, out_value );返回列表属性的值
18.        list_get_item ( list, item_num, out_value );返回列表选项的内容
19.        list_get_item_coord ( list, item, out_x, out_y, out_width, out_height );返回列表选项的四个坐标
20.        list_get_item_info ( list, item, state, out_value );返回列表选项的状态
21.        list_get_item_num ( list, item, out_num );返回列表选项的位置
22.        list_get_selected ( list, out_item, out_num );返回列表里选定选项的数字和字符串值
23.        list_get_subitem ( list, item, subitem_index, subitem );返回列表图子目录的值
例如:list_get_subitem ("SysListView32", "#"&i,7,value); # Item Number 3;

24.        list_rename_item ( list, item );激活列表项的标签以便重命名
25.        list_select_item ( list, item [,button[, offset ] ]);选择一个列表选项
26.        list_select_multi_items ( list, item_list [, mouse_button[, offset ] ] );选择一个列表的多个选项
27.        list_select_range ( list, item1, item2 [, button[, offset ] ]);选定一定范围内全部选项
28.        list_set_item_state ( list, item, value [, button ] );设置制定列表中的图标的状态
例如:list_set_item_state ("SysListView32", items_arr, OFF);

29.        list_wait_info ( list, property, value, time );等待列表属性的值

学会洒脱 发表于 2008-10-22 13:18:59

这些是list的相关函数...麻烦蓝天伟大哥帮我看看....谢谢

lantianwei 发表于 2008-10-22 15:04:33

1.list_get_item_num(list,item,out_num)
>>根据返回的out_num的值来判断是否存在指定的选项(前提是当找不到时,返回值为一特殊值,比如-1,如果是找不到脚本直接报错,那么该方法将失效) ,该方法简单些

2.list_get_info(list,property,out_value)得到该list有多少个选项
list_get_item(list,num,out_value)从0开始循环,反复检查是否存在你指定的值

以上方法的前提都是你的list是“真实”的LIST

学会洒脱 发表于 2008-10-22 15:29:04

谢谢蓝天伟大哥,首先确认下..我这个是"真实"的list

可以使用WR的函数..

你提的两种方法让我的思维有了些扩展..谢谢..

但目前想要的效果就是方法1类似的...但是方法1如蓝天伟大哥所说"找不到脚本直接报错",这样导致脚本执行中断显然是不行的.而我恰恰是目前这么种情况.只需要返回一个值来告诉脚本当前列表不存在该项,我可以通过脚本来避免XLS(数据驱动,采用XLS,由业务专家来填写)中数据需要选择某选项而某选项当前状态并不存在的情况...

学会洒脱 发表于 2008-10-22 15:33:46

举个例子:
switch(aa)
{
case 1:
list_select_item("aaa","1");
case 2:
list_select_item("aaa","2");
case 3:
list_select_item("aaa","3");
}
当后台数据为某一状态时.list_select_item("aaa","3");
并不存在,但在数据驱动时,无法保证数据驱动的内容在这一状态下不会选择list_select_item("aaa","3");
,那会导致脚本执行到此处时,中断执行.

dabie 发表于 2008-10-22 17:14:36

while(bool!=1)
        {
                     set_window("**", 1);
        list_get_items_count("**",outnum);   //得到选项个数
                     for(i=0;i<outnum;i++)
        {
           list_select_item("**","#"&i);             //设置列表选种第一个选项
           list_get_info("**","value",itemname);//取得选中项的值
                        if(itemname=="想要查询的选项")      //比较该值是否与期望值一致,如果一致就将标志位bool置1,不一致维持初始状态0
              bool=1;   //如果找到了期望项也可以在这里就退出循环,不用全部执行
       }
                     }

   下面就是根据bool的值进行判断,执行相应的操作

不知道这样的可否满足要求

学会洒脱 发表于 2008-10-22 17:35:55

这个方法跟蓝天伟大哥的方法2有些类似...
应该可以满足...
受两位的启发,我写了下..跟两位的有所不同,只是根据具体业务来的...
strvalue = "***";     #某一特定列表项
list_get_info ("****", "count",val);   #获取列表项的个数
str_item = "";
for(i=0;i<val;i++)
{
        list_get_item ("*******", i, item);
        str_item = str_item & item;      #将所有的item信息都存入一个变量
}
if(index(str_item,strvalue) < 1)   #index一下.查看当前状态下是否存在该列表项
{
        str_Result = "FAIL";
        str_ErrorMasage = "不存在" &strvalue& "状态,请检查对比输入值";
        #以下进行异常退出一系列操作
}



十分感谢蓝天伟大哥和dabie...让我的思路又拓宽许多,再次表达谢意!

[ 本帖最后由 学会洒脱 于 2008-10-22 17:37 编辑 ]

学会洒脱 发表于 2008-10-23 09:00:28

list_get_info ("**", "count",val);
list_get_items_count("**",outnum);   #//得到选项个数

这两个作用MS一样啊...有没有什么区别呢?

Fastpoint 发表于 2008-10-29 17:10:54

两个函数结果一样的,从内部角度来讲,使用的API函数不一样

学会洒脱 发表于 2008-10-30 10:12:52

API函数?在哪能看到呢?能不能看这些的源码?
页: [1]
查看完整版本: list列表项个数不确定问题(基本解决,还有个小问题)