找回密码
 加入
搜索
楼主: dnvplj

[AU3基础] 如何上下移动控件所显示的信息【已解决】

[复制链接]
 楼主| 发表于 2019-7-31 09:27:40 | 显示全部楼层
afan 发表于 2019-7-31 09:17
顺序号难道不是为了展示例子用? 如果实际顺序号不改变为何要和可变的控件弄成一个,直接创建一列固定的 ...

afan描述问题很准确,看来问题解决后,标题要改成“如何实现两个控件上下互换位置”,现我正在研究,多谢指教。
发表于 2019-7-31 10:20:58 | 显示全部楼层
既然是相同类型的一组控件,为何要改变控件的位置,互换控件的内容不可以吗?
发表于 2019-7-31 10:29:57 | 显示全部楼层
tubaba 发表于 2019-7-31 10:20
既然是相同类型的一组控件,为何要改变控件的位置,互换控件的内容不可以吗?

不知道LZ会否有其它需求,比如某行使用了不同的颜色或样式,所以移动相对来说可拓展性更好。
如无其它需求,互换内容也可以达到同样的效果~ 代码量无差别,看自己的习惯了
 楼主| 发表于 2019-7-31 10:45:26 | 显示全部楼层
本帖最后由 dnvplj 于 2019-7-31 10:52 编辑
afan 发表于 2019-7-31 10:29
不知道LZ会否有其它需求,比如某行使用了不同的颜色或样式,所以移动相对来说可拓展性更好。
如无其它需 ...

那太好了,给afan添麻烦了。另外,配置文件是不是有必要,因加个添加按钮就可以了,刚想到的。
发表于 2019-7-31 16:18:26 | 显示全部楼层
dnvplj 发表于 2019-7-31 10:45
那太好了,给afan添麻烦了。另外,配置文件是不是有必要,因加个添加按钮就可以了,刚想到的。

也可以这样玩。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2019-7-31 21:17:44 | 显示全部楼层
本帖最后由 dnvplj 于 2019-7-31 21:21 编辑
tubaba 发表于 2019-7-31 10:20
既然是相同类型的一组控件,为何要改变控件的位置,互换控件的内容不可以吗?

“互换控件的内容”的思路非常正确,因还有其他动作,如运行所添加的程序,也需要排序等,但不知怎么去写。
发表于 2019-8-2 19:45:19 | 显示全部楼层
dnvplj 发表于 2019-7-31 10:45
那太好了,给afan添麻烦了。另外,配置文件是不是有必要,因加个添加按钮就可以了,刚想到的。

不知道你的功能目的,无法给出建议,不过一般情况下如有保存数据的必要,则通常使用配置文件,写注册表之类的易出问题不推荐
 楼主| 发表于 2019-8-2 19:54:48 | 显示全部楼层
afan 发表于 2019-8-2 19:45
不知道你的功能目的,无法给出建议,不过一般情况下如有保存数据的必要,则通常使用配置文件,写注册表之 ...

非常感谢afan大的在次回复,不保留数据,只想要您13楼的效果就可以了,到现在我也没研究出来。如果是2个就好办,这一多真就不会了,还望afan大指教。
发表于 2019-8-2 19:59:12 | 显示全部楼层
dnvplj 发表于 2019-8-2 19:54
非常感谢afan大的在次回复,不保留数据,只想要您13楼的效果就可以了,到现在我也没研究出来。如果是2个 ...
Global $iSpacingY = 40
Global $ini = @ScriptDir & '\123.ini'
Global $Form1 = GUICreate('控件上下移动', 500, 340)
Global $aILabel1 = _Label_Lst()
Local $ILabel = _Label_DU()
GUISetState()

While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case -3
                        Exit
                Case $ILabel - 9 To $ILabel
                        $iX = ($nMsg - 13) / 2 + 1
                        If IsInt($iX) Then
                                _Move($iX, 'down')
                        Else
                                _Move(Floor($iX), 'up')
                        EndIf
        EndSwitch
WEnd

Func _Label_Lst()
        Local $Label[6]
        For $ii = 1 To UBound($Label) - 1
                GUICtrlCreateLabel(StringFormat('%02s.', $ii), 30, $iSpacingY * $ii + 20, 15, 20, 0x200)
                GUICtrlSetColor(-1, 0x6622DD)
                $Label[$ii] = GUICtrlCreateLabel(IniRead($ini, $ii, 'Name', ''), 50, $iSpacingY * $ii + 20, 160, 20, 0x200)
        Next
        Return $Label
EndFunc   ;==>_Label_Lst

Func _Label_DU()
        Local $id
        For $ii = 1 To 5
                GUICtrlCreateLabel('↓', 400, $iSpacingY * $ii + 20, 20, 20, 0x200)
                GUICtrlSetBkColor(-1, 0xfce6c9)
                $id = GUICtrlCreateLabel('↑', 422, $iSpacingY * $ii + 20, 20, 20, 0x200)
                GUICtrlSetBkColor(-1, 0xfce6c9)
        Next
        GUICtrlSetState($id - 1, 128)
        GUICtrlSetState($id - 8, 128)
        Return $id
EndFunc   ;==>_Label_DU

Func _Move($iX, $sdirection)
        Local $aCP = ControlGetPos($Form1, '', $aILabel1[$iX])
        If $sdirection = 'down' Then
                Local $iX1 = $iX + 1
        Else
                Local $iX1 = $iX - 1
        EndIf
        Local $aCP1 = ControlGetPos($Form1, '', $aILabel1[$iX1])
        GUICtrlSetPos($aILabel1[$iX], $aCP1[0], $aCP1[1])
        GUICtrlSetPos($aILabel1[$iX1], $aCP[0], $aCP[1])
        Local $iTmp = $aILabel1[$iX]
        $aILabel1[$iX] = $aILabel1[$iX1]
        $aILabel1[$iX1] = $iTmp
EndFunc   ;==>_Move

评分

参与人数 1金钱 +40 收起 理由
dnvplj + 40 很给力!

查看全部评分

 楼主| 发表于 2019-8-2 20:05:23 | 显示全部楼层

非常感谢afan大,暂时还看不明白,我在学习学习。
发表于 2019-8-5 15:55:05 | 显示全部楼层
本帖最后由 xyx115 于 2019-8-5 15:58 编辑
dnvplj 发表于 2019-7-30 23:09
应是2个控件互换位置(加和减),但还要改写配置文件,不然读取出来的信息还是原来的位置,还真有点难。

天空飘来五个字,这都不是事
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-28 09:28 , Processed in 0.076742 second(s), 15 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表