hur.cn - 华软网

 热门搜索

各位高手救救我吧!搞了几天都搞不出来,好头痛(100求救)

  作者:未知    来源:网络    更新时间:2018/2/6
我有两个列表数据窗口dw_1和dw_2,dw_1为新增数据窗口,dw_2为选择数据窗口.
例如:dw_1新增了好多行,假如当鼠标焦点在第三行时,当我按一下上下键的上键(或下键)时,dw_2得到焦点,这时我想要dw_1的当前行还是在第三行,而按了上下键的上键(或下键)后,dw_1当前行会滚到第二行(或第四行),     

我按如下的代码写:
定义实例变量:long td_row

dw_1的itemchanged事件内写:
td_row=row
在RowFocusChanged事件中写:
if currentrow <= 0 or currentrow > rowcount() then Return
setredraw(false)
SetRow(currentrow)
scrolltorow(currentrow)
selectrow(0 ,false)
selectrow(currentrow ,true)
setredraw(true)

td_row=currentrow     //保存当前行

在数据窗口dw_1自定义了"接收上下键的下键"一个事件me_key()[对应PB函数的pbm_dwnkey]
choose case key
case  KeyDownArrow!
   Event RowFocusChanged(td_row - 1)//校验,及进行相关操作
   dw_2.setfocus()
Case KeyupArrow!
    Event RowFocusChanged(td_row + 1)
   dw_2.setfocus()
end choose

这样写有两个问题:(1)dw_1当当前行在最后一行的时候,按一下"上键"时dw_2获得焦点后,dw_1不会回到最后一行,而是到了最后一行的前一行,;
(2)dw_1当当前行在第一行的时候,按一下"下键"时dw_2获得焦点后,dw_1不会回到第一行,而是回到第二行.注:当前行在其它行按上,下键都可以回到前行.
我要实现的:
    不管dw_1当前行在哪一行,按上,下键都可以回到当前行.
请教各位高手,搞了几天好头痛?急死人了!各位高手救救我吧!

------华软网友回答------
既然dw_1中上下键都要不动,所以可以这样写:

数据库窗中自定义事件 m_key中写入:
IF key = KeyDownArrow! OR key = KeyUpArrow! THEN
TriggerEvent("rowfocuschangeing")
END IF

数据窗rowfocuschaning事件中写入:
IF KeyDown(KeyDownArrow!) OR keyDown(KeyUpArrow!) THEN
dw_2.SetFocus()
RETURN -1
END IF

------华软网友回复------
很简单的
dw_1 key事件
choose case key
case  KeyDownArrow!
   dw_2.setfocus()
   return 1 //这句很重要
Case KeyupArrow!
   dw_2.setfocus()
   return 1
end choose


------华软网友回复------
lzheng2001正解。各个事件的返回值都有特定的说法,可以察看帮助!
------华软网友回复------
up
------华软网友回复------
试了下,我的DW是继承的
wangxichen() 喜之郎 :) 的可行
lzheng2001(1加1=0) 的没变化

------华软网友回复------
不会吧,这以前就是用这种方法的,只要加上return 1可屏蔽当前按键的
------华软网友回复------
就是这样了,谢谢各位高手~搞定了
------华软网友回复------
1+1的对啊
------华软网友回复------
马上给分      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。