| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1491 人关注过本帖
标题:listbox字段移动问题
只看楼主 加入收藏
cncyty2017
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2017-3-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
listbox字段移动问题
DO CASE
   CASE thisform.list2.listindex>0 .and. thisform.list2.ListCount>0
      thisform.list2.ListIndex=1
   CASE thisform.list2.ListIndex=0 .and.thisform.list2.listcount>0
      thisform.list2.ListIndex=1
   CASE thisform.list2.listindex=0 .and.thisform.list2.listcount=0
      thisform.list2.ListIndex=0
ENDCASE
IF thisform.list2.listindex>0
   thisform.list3.AddItem(ALLTRIM(thisform.list2.value))&&在list3中增加一个字段,在list2删除一个字段
   thisform.list3.refresh
   thisform.list2.removeitem(thisform.list2.ListIndex)
   thisform.list2.refresh
ELSE
   thisform.cmdremover.Enabled= .T.
   thisform.cmdremoverall.Enabled= .T.
   thisform.cmdadd.Enabled= .f.
   thisform.cmdaddall.Enabled= .f.
ENDIF
发现list2中选定的结果无法现在list3上
      
2017-04-17 09:56
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:20 
试试将 Refresh 改为 Requery
2017-04-17 11:42
cncyty2017
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2017-3-2
收藏
得分:0 
是还不行
2017-04-17 13:01
cncyty2017
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2017-3-2
收藏
得分:0 
补充一点thisform.list2.value的值是正确的。这段程序是cmdadd按钮的程序。整体意识是:把目录中的dbf文件显示在list1中。选择其中一个文中,将他的字段现在list2中
 然后有4个按钮控制字段移动。
2017-04-18 09:30
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
试了一下主要代码好象没问题
** test.prg
of = CREATEOBJECT("myform")
of.show(1)

DEFINE CLASS myform as Form
    ADD OBJECT list2 as listbox WITH top=10,left=10
    ADD OBJECT list3 as listbox WITH top=10,left=120
    ADD OBJECT cmd1 as commandbutton WITH top=10,left=230
   
    PROCEDURE Init
        this.list2.AddItem("list2_1")
        this.list2.AddItem("list2_2")
        this.list2.AddItem("list2_3")
        this.list3.AddItem("list3_1")
        this.list3.AddItem("list3_2")
        this.list3.AddItem("list3_3")
    ENDPROC
   
    PROCEDURE cmd1.click
        DO CASE
        CASE thisform.list2.listindex>0 and thisform.list2.ListCount>0
            thisform.list2.ListIndex=1
        CASE thisform.list2.ListIndex=0 AND thisform.list2.listcount>0
            thisform.list2.ListIndex=1
        CASE thisform.list2.listindex=0 AND thisform.list2.listcount=0
            thisform.list2.ListIndex=0
        ENDCASE
        IF thisform.list2.listindex>0
           thisform.list3.AddItem(ALLTRIM(thisform.list2.value))
           *thisform.list3.refresh
           thisform.list2.removeitem(thisform.list2.ListIndex)
           *thisform.list2.refresh
        ENDIF
    ENDPROC
ENDDEFINE

2017-04-18 09:57
cncyty2017
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2017-3-2
收藏
得分:0 
是我自己马虎了,把list3的属性改动了,谢谢大家程序改好了。适当时间发出来和大家分享。
2017-04-18 14:52
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
收藏
得分:0 
回复 5楼 吹水佬
吹版,有办法获取列表框中指定内容的顺序号吗?比如说我知道列表框中有一项目的名称是“姓名”,现在想把“姓名”的顺序号赋值给变成I1。谢谢。
2017-04-21 17:11
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
以下是引用wangzhiyi在2017-4-21 17:11:53的发言:

吹版,有办法获取列表框中指定内容的顺序号吗?比如说我知道列表框中有一项目的名称是“姓名”,现在想把“姓名”的顺序号赋值给变成I1。谢谢。

列表项目名称可以都一样,不可能用项目的名称来定位。
但各项目可设置唯一ID,用ID来表达想要的项目名。
参考:
AddListItem 方法
ItemIDToIndex 方法
IndexToItemID 方法
ListItemID 属性

2017-04-21 19:47
wangzhiyi
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:366
专家分:684
注 册:2014-4-9
收藏
得分:0 
回复 8楼 吹水佬
不知道是不是我没描述清楚,有没有办法获得列表框中指定内容的初始序号?比如说,LIST1初始有10个项目,分别是A1...A10,现在把其中某些指定的项目复制到了LIST2中,比如说复制了A2,A3,A5,A7,有没有办法获得LIST2这些项目在LIST1的初始顺序号?(这里是有规律,但现实中不一定有规律,对吧。
我目前使用的办法是先用
FOR I=1 TO THISFORM.LIST2.LISTCOUNT
    A1=THISFORM.LIST2.LISTITEM(I)
    THISFORM.LIST1.VALUE=A1
    J=THISFORM.LIST1.LISTINDEX
ENDFOR
不知道还有没有其他更好的办法。
2017-04-26 22:49
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
回复 9楼 wangzhiyi
** test.prg
of = CREATEOBJECT("myform")
of.show(1)

DEFINE CLASS myform as Form
    ADD OBJECT list1 as listbox WITH top=10,left=10
    ADD OBJECT list2 as listbox WITH top=10,left=120
   
    PROCEDURE Init
        this.list1.AddListItem("list1_1", 11)
        this.list1.AddListItem("list1_2", 12)
        this.list1.AddListItem("list1_3", 13)
    ENDPROC
   
    PROCEDURE list1.dblclick
        IF this.listindex > 0
            thisform.list2.AddListItem(this.ListItem(this.ListItemID), this.ListItemID)
        ENDIF
    ENDPROC

    PROCEDURE list2.click
        IF this.listindex > 0
            thisform.list1.SelectedID(this.ListItemID) = .T.
        ENDIF
    ENDPROC
ENDDEFINE

要用到Index时可转换:
ItemIDToIndex
IndexToItemID
2017-04-27 06:24
快速回复:listbox字段移动问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024342 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved