| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2630 人关注过本帖
标题:如何listbox项目位置有调整时,让表单上的command按钮可用呢
只看楼主 加入收藏
厨师王德榜
Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18
等 级:贵宾
威 望:199
帖 子:991
专家分:4966
注 册:2013-2-16
收藏
得分:0 
1、列表框中有OnMoveItem  事件,可以响应内容的改变。
2、可以事先用数组记录列表框中数据的顺序,再与响应事件后的ListBox顺序比较,若结果不同,则让Command控件激活。
3、用数组记录列表框的例子:
程序代码:
LOCAL mlstcount as Integer
mlstcount=thisform.lstSelected.ListCount
*  按当前顺序抓取列表框元素到数组中,供下步调用。
DIMENSION aSqlzd[mlstcount] as String 
FOR ir=1 TO mlstcount
    thisform.lstSelected.Listindex=(ir)
    aSqlzd[ir]=allt(thisform.lstSelected.DisplayValue)
ENDFOR
* 此时,数组中各元素的顺序,就是用户调整后的列表框元素顺序。

2016-08-29 08:48
Director_lbw
Rank: 2
来 自:河南安阳
等 级:论坛游民
威 望:1
帖 子:27
专家分:37
注 册:2015-1-6
收藏
得分:0 
回复 11楼 厨师王德榜
你好:
   谢谢你的回复,我也利用了OnMoveItem  事件,可是“保存”的按键enable属性变为T后,没有任何变化,刷新表单也没有用,只有鼠标经过上面才可以变为可用状态.下面图为我的表单
111.rar (8.43 KB)
其实这个功能到不是很重要,重要的是为什么这样不能用。我在LISTBOX 的ONMOVEITEM事件中让表单的“保存”可用(THISFORM。CMDSAVE。ENABLE=。T。)这样的设置并没有反应,只有鼠标经过才可以改变状态。不知道到底是什么原因。

只要行动,一切皆有可能
2016-09-01 09:44
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
你把你表单打包成RAR发上来看看。
或者
你这样测试1下,看看有么反应 在 thisform.list1.OnMoveItem 中
LPARAMETERS nSource, nShift, nCurrentIndex, nMoveBy
MESSAGEBOX("OnMoveItem")
= ! &&把 command4 改为你保存按钮的名称。




[此贴子已经被作者于2016-9-1 11:44编辑过]

2016-09-01 11:18
Director_lbw
Rank: 2
来 自:河南安阳
等 级:论坛游民
威 望:1
帖 子:27
专家分:37
注 册:2015-1-6
收藏
得分:0 
回复 10楼 mywisdom88
真是麻烦大家了,它这个类
class.rar (20.51 KB)
中的LISTVCR,里面有所的代码,还请各位指教。谢了!

只要行动,一切皆有可能
2016-09-01 15:19
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
* List1.OnMoveItem
LPARAMETERS nSource, nShift, nCurrentIndex, nMoveBy
this.Parent.inmodify=.T.

* ListVcr1.Init
IF this.inmodify
   this.cmdsave.Enabled= .T.
  ELSE
   this.cmdsave.Enabled= .F.
ENDIF

* ListVcr.inmodify_assign

LPARAMETERS vNewVal
*To do: Modify this routine for the Assign method
IF vNewVal
  this.cmdsave.Enabled=.T.
 ELSE
  this.cmdsave.Enabled=.F.
ENDIF
thisform.Refresh

* cmdadd.Click
IF !EMPTY(this.Parent.text1.text)
   this.Parent.list1.AddItem(ALLTRIM(this.Parent.text1.text))
   this.Parent.text1.value=""
   this.Parent.inmodify=.T.
   this.Parent.text1.SetFocus
ENDIF

* cmddel.Click
LOCAL oLIST,Answer
oLIST=this.Parent.list1
IF oLIST.ListIndex>0
    Answer=MESSAGEBOX("确认要删除您选择的:"+oLIST.LIST(oLIST.listindex),4+64,thisform.Caption)
    IF Answer=6
      oLIST.removeitem(oLIST.listindex)
      this.Parent.inmodify=.T.
     ELSE
     RETURN
   ENDIF
  ELSE
   MESSAGEBOX("请选择您所要删除的项目",0+64,thisform.Caption)
ENDIF

他在2个地方控制了保存按钮,除了在 ListVcr1.Init 中,另外在ListVcr.inmodify_assign,但找不到,在那里调用他
2016-09-01 18:03
Director_lbw
Rank: 2
来 自:河南安阳
等 级:论坛游民
威 望:1
帖 子:27
专家分:37
注 册:2015-1-6
收藏
得分:0 
回复 15楼 mywisdom88
版主您好:
    不好意思这么长时间了还没有结贴,最后一次问了。这个变量inmodify是_assign属性,只要赋值就改变“保存”按钮的状态,也就是说只要变量inmodify为.T.就证明有所变动,就让“保存”可用。我在“增加”或“删除”还有LISTBOX的ONmoveITEM事件中都让inmodify为.T.,这样让“保存”自动可用。但是鼠标经过上面就会变化颜色(即可以用了)。还现是“增加”和“删除”是都没有问题,但是在ONmoveITEM事件中(也就是调整或移动当中的项目)控制变量inmodify为.T.却不行(直接控制CMDSAVE的ENABLE为。T。也不行)。还望版主多多指教。

[此贴子已经被作者于2016-9-2 11:44编辑过]


只要行动,一切皆有可能
2016-09-02 11:37
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
回复 16楼 Director_lbw
* List1.OnMoveItem
LPARAMETERS nSource, nShift, nCurrentIndex, nMoveBy
this.Parent.inmodify=.T.

* ListVcr.inmodify_assign 你这个,找不到在哪里调用他。
LPARAMETERS vNewVal
*To do: Modify this routine for the Assign method
IF vNewVal
  this.cmdsave.Enabled=.T.
 ELSE
  this.cmdsave.Enabled=.F.
ENDIF
thisform.Refresh

* List1.OnMoveItem ,把这个修改成这样,应该可以
LPARAMETERS nSource, nShift, nCurrentIndex, nMoveBy
vNewVal=.T.
this.Parent.ListVcr.inmodify_assign()



[此贴子已经被作者于2016-9-2 11:58编辑过]

2016-09-02 11:56
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:20 
以下是引用Director_lbw在2016-9-2 11:37:55的发言:

版主您好:
    不好意思这么长时间了还没有结贴,最后一次问了。这个变量inmodify是_assign属性,只要赋值就改变“保存”按钮的状态,也就是说只要变量inmodify为.T.就证明有所变动,就让“保存”可用。我在“增加”或“删除”还有LISTBOX的ONmoveITEM事件中都让inmodify为.T.,这样让“保存”自动可用。但是鼠标经过上面就会变化颜色(即可以用了)。还现是“增加”和“删除”是都没有问题,但是在ONmoveITEM事件中(也就是调整或移动当中的项目)控制变量inmodify为.T.却不行(直接控制CMDSAVE的ENABLE为。T。也不行)。还望版主多多指教。

只要赋值就改变“保存”按钮的状态,也就是说只要变量inmodify为.T.就证明有所变动,就让“保存”可用。。。
但找不到你执行 MDSAVE.ENABLE=.t.,你是不是用定时器,定时检查 inmodify 的值...
2016-09-02 12:02
快速回复:如何listbox项目位置有调整时,让表单上的command按钮可用呢
数据加载中...
 
   



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

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