hur.cn - 华软网

 热门搜索

小弟有个问题辣手的问题?(高分求救)

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

我的代码:
定义实例变量:long td_row

dw_1的itemchanged事件内写:
td_row=row
我在数据窗口dw_1自定义了"接收上下键的下键"一个事件me_key()[对应PB函数的pbm_dwnkey],
    IF key = KeyDownArrow! THEN
         dw_1.setredraw(true)
         dw_1.SetRow(td_row -1)
         dw_1.scrolltorow(td_row -1)
         dw_2.SetFocus ( )
    end if
我这样写还是不行,
请问:我还要怎么做?请指教.
------华软网友回答------
你在clicked事件写td_row=row
me_key()事件写
    IF key = KeyDownArrow! THEN
         dw_1.setredraw(false)
         dw_1.SetRow(td_row -1)
         dw_1.scrolltorow(td_row -1)
         dw_1.selectrow(0 ,false)
         dw_1.selectrow(td_row -1 ,true)
         dw_1.setredraw(true)
     end if


IF key = KeyupArrow! THEN
dw_2.setfocus()
end if
------华软网友回复------
打错字了吧? 是否想做一个弹出式数据窗口?
------华软网友回复------
还是不行啊,大哥
------华软网友回复------
需要在RowFocusChanged事件中写:
if currentrow <= 0 and currentrow > rowcount() then Return
setredraw(false)
SetRow(currentrow)
scrolltorow(currentrow)
selectrow(0 ,false)
selectrow(currentrow ,true)
setredraw(true)

td_row=currentrow     //保存当前行

///ue_downkey() [pbm_dwnkey]
choose case key
case  KeyDownArrow!
   Event RowFocusChanged(td_row - 1)//校验,及进行相关操作
Case KeyupArrow!
   dw_2.setfocus()
case else
   //
end choose

------华软网友回复------
if currentrow <= 0 OR currentrow > rowcount() then Return //打错关系了
------华软网友回复------
IF key = KeyDownArrow! THEN
         dw_2.SetFocus ( )
         dw_1.setredraw(true)
         dw_1.post SetRow(td_row -1)
         dw_1.post scrolltorow(td_row -1)
    end if

------华软网友回复------
大哥:我想按上键和按下键(KeyDownArrow!和KeyupArrow!)都在当前行,
是不是这样:
  ///ue_downkey() [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
我试了,好像在有些行是不行啊?

------华软网友回复------
如果光标不变,RofocusChanged事件就不用写代码了。这只是为了触发换行,及换行之后进行的操作。
------华软网友回复------
按上键和按下键(KeyDownArrow!和KeyupArrow!)都在当前行,按上键和按下键都应该在RofocusChanged事件写代码
按以下写好像不得:
  ///ue_downkey() [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

------华软网友回复------
你的数据窗口是继承来的吧
------华软网友回复------
不是啊
------华软网友回复------
在自定义的ue_key事件中写:
IF key = KeyDownArrow! OR key = KeyUpArrow! THEN
   TriggerEvent("rowfocuschangeing")
END IF

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


------华软网友回复------
我重说一下我的问题:
我有两个列表数据窗口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自定义了"接收上下键的下键"一个事件me_key()[对应PB函数的pbm_dwnkey]
代码如下:
IF key = KeyDownArrow! OR key = KeyUpArrow! THEN
tab_1.mitem.dw_clinic_midecal.setfocus()
return 1

END IF
这样就可以了,其它的都不用写代码,谢谢各位高手,马上给分!      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。