想模仿JS的一个联动菜单,请指点一下[已解决]
本帖最后由 heroxianf 于 2018-10-9 17:32 编辑这个是JS完成,我想在AU3的input控件上完成这个操作,请问有实现的途径吗?
自己的想法1:另外做一个界面,点击input控件跳出来选择。
2:类似于下拉菜单,然后鼠标悬停就弹出来。(这种建立菜单过于长,因为分类实在太多了。)
PS:感谢A大和顽固的指点,除了程序的设计,数据库存储格式也很重要,解决代码就在下方讨论区里。
本帖最后由 绿色风 于 2018-9-27 16:53 编辑
http://www.autoitx.com/thread-59291-1-1.html
看下,嫩用到1/3,给你
无限循环好高的,做好数据结构就行
绿色风 发表于 2018-9-27 16:51
http://www.autoitx.com/thread-59291-1-1.html
看下,嫩用到1/3,给你
我看了一下,是控件分开关联的,我需要在一个控件下弹出菜单选择,和截图一模一样。
http://www.17sucai.com/pins/demo-show?id=20634 这个效果 原理是一样的啊,下拉框换成列表框,点击输入框显示这个窗口。 志艺风云 发表于 2018-9-27 18:52
原理是一样的啊,下拉框换成列表框,点击输入框显示这个窗口。
能否给一个简单的示例呢 本帖最后由 afan 于 2018-9-28 10:39 编辑
如果是au3做成类似的功能,应该不是这样想的吧,被先入为主了……
直接用弹出菜单的形式(不是ComboBox弹出菜单)不知道要方便多少倍,只要点击一下,各级菜单均可直接划开显示/选择。
弹出菜单网页可能不好弄(或者出于美观协调性),而Au3再方便不过了。
afan 发表于 2018-9-28 10:35
如果是au3做成类似的功能,应该不是这样想的吧,被先入为主了……
直接用弹出菜单的形式(不是ComboBox弹出 ...
A大 用什么函数去实现呢?你描述的大体是什么样子的? 主要是分类很多一级30个、一直到5级,总行数有2400多行。
heroxianf 发表于 2018-9-28 10:38
A大 用什么函数去实现呢?你描述的大体是什么样子的? 主要是分类很多一级30个、一直到5级,总行数有24 ...
这个数量肯定没问题。随便就用 _GUICtrlMenu_CreatePopup 好了。
这个js能显示的,弹出菜单只会比它更能显示更多菜单项 顺便提醒一下细节部分, Input 控件最好加上只读样式,或者直接使用 Label 控件,以防用户直接误修改造成与最终读取不符 afan 发表于 2018-9-28 10:49
顺便提醒一下细节部分, Input 控件最好加上只读样式,或者直接使用 Label 控件,以防用户直接误修改造成与 ...
嗯,我打算建立一个按钮控件来显示,好歹有一个样式在。 heroxianf 发表于 2018-9-28 10:17
能否给一个简单的示例呢
你把 绿色风 的那个 GUICtrlCreateCombo 改成 GUICtrlCreateList控件看看,不就是差不多了吗。
你在窗口点击一个按钮,显示那个窗口不就行了吗,样式你再改改,当然想改成那个网页一样基本没可能。 afan 发表于 2018-9-28 10:49
顺便提醒一下细节部分, Input 控件最好加上只读样式,或者直接使用 Label 控件,以防用户直接误修改造成与 ...
A大 不太会使用这个函数,示例里 WM_CONTEXTMENU($hWnd, $iMsg, $wParam, $lParam)这些参数也没看明白,不声明也可以使用。还希望A大给一个列子,附件是我设计的INI存储格式。
志艺风云 发表于 2018-9-28 13:23
你把 绿色风 的那个 GUICtrlCreateCombo 改成 GUICtrlCreateList控件看看,不就是差不多了吗。
你在窗口 ...
感谢,我一开始也是想的A大的方法,不过对消息注册事件不懂,也就卡壳了。 afan 发表于 2018-9-28 10:49
顺便提醒一下细节部分, Input 控件最好加上只读样式,或者直接使用 Label 控件,以防用户直接误修改造成与 ...
我对那个动态创建子菜单有点想不到方法。 本帖最后由 afan 于 2018-9-28 16:37 编辑
heroxianf 发表于 2018-9-28 15:44
我对那个动态创建子菜单有点想不到方法。
注意: 示例 ini 文件如果用ini内置函数操作,不要用 UTF-8 格式保存,那样会乱码。本例已存为 ANSI
#include <GuiMenu.au3>
Global $hGUI
Example()
Func Example()
; 创建 GUI
$hGUI = GUICreate('test')
GUISetState(@SW_SHOW)
GUICtrlCreateLabel('点击选择 >', 10, 10, 300, 20)
While 1
Switch GUIGetMsg()
Case -3
Exit
Case 3
_CreateMenu()
EndSwitch
WEnd
EndFunc ;==>Example
Func _CreateMenu()
Local $fIni = 'set.ini'
Local $aIni = IniReadSection($fIni, 'one')
If @error Then Return SetError(1, 0, 0)
Local $hMenu = _GUICtrlMenu_CreatePopup()
Local Enum $itemC0 = 1500
Local $aIni1, $hMenuC
For $ii = 1 To $aIni
$aIni1 = IniReadSection($fIni, $aIni[$ii])
If @error Then ContinueLoop
$hMenuC = _GUICtrlMenu_CreateMenu()
For $jj = 1 To $aIni1
_GUICtrlMenu_AddMenuItem($hMenuC, $aIni1[$jj], $itemC0)
Next
_GUICtrlMenu_AddMenuItem($hMenu, $aIni[$ii], 0, $hMenuC)
Next
_GUICtrlMenu_TrackPopupMenu($hMenu, $hGUI)
_GUICtrlMenu_DestroyMenu($hMenu)
EndFunc ;==>_CreateMenu