chzj589 发表于 2020-12-1 15:48:00

键盘的上、下、左、右箭头键操作[己解决]

本帖最后由 chzj589 于 2020-12-25 13:15 编辑

请教A版:
回车键是:
      Local $id1 = GUICtrlCreateDummy()
      GUICtrlSetOnEvent(-1, '__UdpData')
      Local $aAccelKeys = [['{Enter}', $id1]];回车键
      GUISetAccelerators($aAccelKeys)
那上箭头键如何写?
      Local $id2 = GUICtrlCreateDummy()
      GUICtrlSetOnEvent(-1, '__UdpData1')
      Local $aAccelKeys1 = [['{UP}', $id2]];上箭头键
      GUISetAccelerators($aAccelKeys1)
Func __UdpData1()
      ??????
EndFunc   ;==>###################################################
      Local $id1 = GUICtrlCreateDummy()
      GUICtrlSetOnEvent(-1, '__UdpData')
      Local $aAccelKeys = [['{Enter}', $id1]];回车键
      GUISetAccelerators($aAccelKeys)
      Local $id2 = GUICtrlCreateDummy()
      GUICtrlSetOnEvent(-1, '_UP')
      Local $id3 = GUICtrlCreateDummy()
      GUICtrlSetOnEvent(-1, '_DOWN')
      Local $id4 = GUICtrlCreateDummy()
      GUICtrlSetOnEvent(-1, '_LEFT')
      Local $id5 = GUICtrlCreateDummy()
      GUICtrlSetOnEvent(-1, '_RIGHT')
      Local $aAccelKeys = [['{Enter}', $id1], ['{UP}', $id2], ['{DOWN}', $id3], ['{LEFT}', $id4], ['{RIGHT}', $id5]]
      GUISetAccelerators($aAccelKeys)

Func __UdpData()
       MsgBox(0, "提示", "回车键", 1)
EndFunc   ;==>__UdpData

Func _RIGHT()
      MsgBox(0, "提示", "右箭头键", 1)
EndFunc   ;==>_RIGHT
Func _LEFT()
      MsgBox(0, "提示", "左箭头键", 1)
EndFunc   ;==>_LEFT
Func _DOWN()
      MsgBox(0, "提示", "下箭头键", 1)
EndFunc   ;==>_DOWN
Func _UP()
      MsgBox(0, "提示", "上箭头键", 1)
EndFunc   ;==>_UP终于知道是怎么回事了,其实并不是在列表上编辑。。。。。





原地編輯键盘的上、下箭头键操作RAR



afan 发表于 2020-12-1 15:59:40

Local $id1 = GUICtrlCreateDummy()
GUICtrlSetOnEvent(-1, '__UdpData')
Local $id2 = GUICtrlCreateDummy()
GUICtrlSetOnEvent(-1, '_UP')

Local $aAccelKeys = [['{Enter}', $id1], ['{UP}', $id2]]
GUISetAccelerators($aAccelKeys)

Func _UP()
EndFunc

chzj589 发表于 2020-12-1 16:12:17

afan 发表于 2020-12-1 15:59


谢谢!
我想在ListView列表用上、下、左、右键控制子项目移动

Func _UP()
   如何写入列表子项目移动代码???
EndFunc

afan 发表于 2020-12-1 17:21:27


不举例了,简单说一下
_GUICtrlListView_SetItemText 分别设置互换位置的两项文本
如果有图像列表也需 _GUIImageList_GetIcon、_GUIImageList_ReplaceIcon、_GUIImageList_AddIcon 之类的互换

chzj589 发表于 2020-12-2 08:23:22

afan 发表于 2020-12-1 17:21
不举例了,简单说一下
_GUICtrlListView_SetItemText 分别设置互换位置的两项文本
如果有图像列表也需...

我是想在列表上操作导航键。
鼠标点击列表子项目后形成编辑框,然后操作导航键,使编辑框移动。
做到原地编辑的时候 按下往上 按鍵 就会使编辑框移动上一个的编辑框

afan 发表于 2020-12-2 10:39:10

chzj589 发表于 2020-12-2 08:23
我是想在列表上操作导航键。
鼠标点击列表子项目后形成编辑框,然后操作导航键,使编辑框移动。
做到原 ...

那就移动编辑框不就完事了

chzj589 发表于 2020-12-2 11:30:22

afan 发表于 2020-12-2 10:39
那就移动编辑框不就完事了

想不出怎么移?按一下上箭头键,往上移动一行,如何写?请赐教!

afan 发表于 2020-12-2 12:24:54

chzj589 发表于 2020-12-2 11:30
想不出怎么移?按一下上箭头键,往上移动一行,如何写?请赐教!

何时触发显示编辑框及其数据?将这个触发事件写到快捷键就行了。

另外提醒:
在有 ListView 之类的控件时,上下箭头已是系统默认的移动高亮选择,如果将这些注册为快捷键,则会取消系统的默认动作,在很多时候都会不方便,因为切换选择项目只能靠鼠标点击了。同理,在编辑框中,方向键默认是移动光标便于编辑,注册为快捷键也将失去该功能。
正确的做法是注册的方向键快捷键加上Ctrl或Shift之类的辅助键。

chzj589 发表于 2020-12-2 12:34:58

afan 发表于 2020-12-2 12:24
何时触发显示编辑框及其数据?将这个触发事件写到快捷键就行了。

另外提醒:

谢谢!
有人曾向我问这个问题,我也认为这个挺麻烦的







afan 发表于 2020-12-2 12:47:31

chzj589 发表于 2020-12-2 12:34
谢谢!
有人曾向我问这个问题,我也认为这个挺麻烦的

这个是可以实现的。
单行编辑框上下箭头没什么意义,因此可以作为快捷键,看你怎么设计了。
比如,在编辑框显示时注册快捷键,编辑框隐藏时注销快捷键。

chzj589 发表于 2020-12-3 09:57:01

afan 发表于 2020-12-2 12:47
这个是可以实现的。
单行编辑框上下箭头没什么意义,因此可以作为快捷键,看你怎么设计了。
比如,在编 ...

是可以实现。己经知道怎么写了。但还得花点时间。谢谢

afan 发表于 2020-12-3 14:11:17

chzj589 发表于 2020-12-3 09:57
是可以实现。己经知道怎么写了。但还得花点时间。谢谢

是的,也是很简单的

chzj589 发表于 2020-12-3 15:18:40

afan 发表于 2020-12-3 14:11
是的,也是很简单的

基本搞定,列表列宽不一样就有点问题。像下图的列宽不一样,就不好设置座标。我的写法跟你可能不一样


afan 发表于 2020-12-4 11:53:55

chzj589 发表于 2020-12-3 15:18
基本搞定,列表列宽不一样就有点问题。像下图的列宽不一样,就不好设置座标。我的写法跟你可能不一样

...

列宽可直接如之前的方式获取,更新到编辑框坐标就行了。
另建议:
1,左右键最好不好注册快捷键,前面说了,那是方便移动光标的。比如你要在原有内容上编辑就只能鼠标点击定位了,你试着编辑下就知道了。
2,一般高亮选择项要跟随编辑项切换,而不是始终保持不变,如现在不管你在编辑第2还是第3项,第1项始终保持高亮……

chzj589 发表于 2020-12-4 13:02:10

afan 发表于 2020-12-4 11:53
列宽可直接如之前的方式获取,更新到编辑框坐标就行了。
另建议:
1,左右键最好不好注册快捷键,前面 ...

谢谢!我的方法可能不对。现原地编辑不能修改了。
再折腾折腾吧
页: [1] 2
查看完整版本: 键盘的上、下、左、右箭头键操作[己解决]