数组按钮如何点击事件【已解决】
本帖最后由 872777825 于 2014-2-19 15:38 编辑#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Local $BTXL, $XLlist = 1, $XLspaceX = 95, $XLspaceY = 80, $XLbjx = 170, $XLbjy = 35
$Form1 = GUICreate("Form1", 623, 442)
For $i = 0 To UBound($BTXL) - 1
$BTXL[$i] = GUICtrlCreateButton("yyyy", $XLspaceX * Mod($i, $XLlist) + $XLbjx, $XLspaceY * Floor($i / $XLlist) + $XLbjy, 160, 35)
Next
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
如图用数组做出来的按钮控件
怎么在点击不同按钮的情况下产生不同事件
如按第一个弹出对话框A 按第二个打开网页.....
还有怎么给每个按钮单独命名
想了好久都没想出来该怎么办
麻烦各位前辈指点一下谢谢 #include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Local $BTXL, $XLlist = 1, $XLspaceX = 95, $XLspaceY = 80, $XLbjx = 170, $XLbjy = 35
$Form1 = GUICreate("Form1", 623, 442)
For $i = 0 To UBound($BTXL) - 1
$BTXL[$i] = GUICtrlCreateButton("yyyy", $XLspaceX * Mod($i, $XLlist) + $XLbjx, $XLspaceY * Floor($i / $XLlist) + $XLbjy, 160, 35)
Next
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $BTXL
MsgBox(64,"","0")
Case $BTXL
MsgBox(64,"","1")
Case $BTXL
MsgBox(64,"","2")
Case $BTXL
MsgBox(64,"","3")
Case $BTXL
MsgBox(64,"","4")
EndSwitch
WEnd Local $BTXL, $XLlist = 1, $XLspaceX = 95, $XLspaceY = 80, $XLbjx = 170, $XLbjy = 35
$Form1 = GUICreate('Form1', 623, 442)
Local $aBtn = [['运行notepad'],['bbb'],['c'],['d'],['退出']]
For $i = 0 To UBound($BTXL) - 1
$aBtn[$i] = GUICtrlCreateButton($aBtn[$i], $XLspaceX * Mod($i, $XLlist) + $XLbjx, $XLspaceY * Floor($i / $XLlist) + $XLbjy, 160, 35)
Next
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3, $aBtn
Exit
Case $aBtn
Run('notepad.exe')
Case $aBtn To $aBtn
MsgBox(0, '按钮文本', GUICtrlRead($nMsg))
EndSwitch
WEnd 事件模式:Opt('GUIOnEventMode', 1)
Local $XLlist = 1, $XLspaceX = 95, $XLspaceY = 80, $XLbjx = 170, $XLbjy = 35
$Form1 = GUICreate('Form1', 623, 442)
GUISetOnEvent(-3, '_Exit')
Local $aBtn = ['运行notepad', 'b', 'c', 'd', '退出']
For $i = 0 To UBound($BTXL) - 1
GUICtrlCreateButton($aBtn[$i], $XLspaceX * Mod($i, $XLlist) + $XLbjx, $XLspaceY * Floor($i / $XLlist) + $XLbjy, 160, 35)
GUICtrlSetOnEvent(-1, '_bt_events')
Next
GUISetState()
While 1
Sleep(50)
WEnd
Func _Exit()
GUIDelete($Form1)
Exit
EndFunc
Func _bt_events()
Switch GUICtrlRead(@GUI_CtrlId)
Case '运行notepad'
Run('notepad.exe')
Case 'b'
MsgBox(0, '按钮', 'b')
Case 'c'
MsgBox(0, '按钮', 'c')
Case 'd'
MsgBox(0, '按钮', 'd')
Case Else
_Exit()
EndSwitch 回复 2# palkiller
谢谢回复问题解决了 回复 3# afan
谢谢AFAN版主回复
问题解决了{:face (316):} 回复 4# user3000
谢谢回复又多学习了一种方法 事件模式:
user3000 发表于 2014-2-18 18:53 http://www.autoitx.com/images/common/back.gif
建议使用了变量,其它地方最好直接引用,免得修改起来会比较麻烦,也容易疏漏。Func _bt_events()
Switch GUICtrlRead(@GUI_CtrlId)
Case $aBtn
Run('notepad.exe')
Case $aBtn
MsgBox(0, '按钮', $aBtn)
Case $aBtn
MsgBox(0, '按钮', $aBtn)
Case $aBtn
MsgBox(0, '按钮', $aBtn)
Case $aBtn
_Exit()
EndSwitch
EndFunc 回复 8# afan
是极!
算起来,这3、4个月没怎么码过代码了!估计就这么地慢慢地把以前用过的AU3知识全“清零”了。 回复afan
是极!
算起来,这3、4个月没怎么码过代码了!估计就这么地慢慢地把以前用过的AU3知识全“ ...
user3000 发表于 2014-2-19 18:28 http://www.autoitx.com/images/common/back.gif
肯定不会… 除非不逛这了 ^ ^ 本帖最后由 872777825 于 2014-2-20 09:48 编辑
回复 10# afan
afan 版主我再追加下问个问题
如下图
Local $BTXL, $XLlist = 1, $XLspaceX = 60, $XLspaceY = 60, $XLbjx = 170, $XLbjy = 35
Local $BT, $list = 1, $spaceX = 60, $spaceY = 60, $bjx = 350, $bjy = 45
$Form1 = GUICreate('Form1', 623, 442)
Local $aBtn = [['C],['D'],['E],['F'],['退出']]
Local $aBtnx = [['本地磁盘1'],['本地磁盘2'],['本地磁盘3'],['本地磁盘4'],['本地磁盘5']]
For $i = 0 To UBound($BTXL) - 1
$aBtn[$i] = GUICtrlCreateButton($aBtn[$i], $XLspaceX * Mod($i, $XLlist) + $XLbjx, $XLspaceY * Floor($i / $XLlist) + $XLbjy, 160, 35)
Next
For $i = 0 To UBound($BT) - 1
$aBtnx[$i] = GUICtrlCreateLabel($aBtnx[$i], $spaceX * Mod($i, $list) + $bjx, $spaceY * Floor($i / $list) + $bjy, 160, 35)
Next
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3, $aBtn
Exit
Case $aBtn To $aBtn
MsgBox(0, '按钮文本', GUICtrlRead($nMsg))
EndSwitch
WEnd怎么才能实现按每个按钮的时候可以在弹出的对话框 显示右边对应的文本内容呢?
当然Local $aBtnx = [['文本1'],['文本2'],['文本3'],['文本4'],['文本5']]这段文本内容不是特定的是通过获取计算机信息得到的
例如
Local $aBtn
Local $aBtnx
这个中的5是通过获取得到的硬盘分区数量$aBtnx 这个变量是分区的卷标名
那么按没个按钮的时候就提示相应分区的卷标名
麻烦您再费时指点下小弟 谢谢 本帖最后由 afan 于 2014-2-20 11:13 编辑
回复 11# 872777825
道理是一样的。而且需要增加的文本并不需要2维数组,1维数组就可以了,也可以直接加在之前的2维数组中。Local $BTXL, $XLlist = 1, $XLspaceX = 60, $XLspaceY = 60, $XLbjx = 170, $XLbjy = 35
Local $BT, $list = 1, $spaceX = 60, $spaceY = 60, $bjx = 350, $bjy = 45
$Form1 = GUICreate('Form1', 623, 442)
Local $aBtn = [['C'],['D'],['E'],['F'],['退出']]
Local $aBtnx = ['本地磁盘1', '本地磁盘2', '本地磁盘3', '本地磁盘4', '本地磁盘5']
For $i = 0 To UBound($BTXL) - 1
$aBtn[$i] = GUICtrlCreateButton($aBtn[$i], $XLspaceX * Mod($i, $XLlist) + $XLbjx, $XLspaceY * Floor($i / $XLlist) + $XLbjy, 160, 35)
Next
For $i = 0 To UBound($BTXL) - 1
GUICtrlCreateLabel($aBtnx[$i], $spaceX * Mod($i, $list) + $bjx, $spaceY * Floor($i / $list) + $bjy, 160, 35)
Next
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3 ;;;;, $aBtn
Exit
Case $aBtn To $aBtn
MsgBox(0, '右边文本', $aBtnx[$nMsg - $aBtn])
If $nMsg = $aBtn Then Exit
EndSwitch
WEnd 回复 12# afan
好像是用 event 函数 做事件的时候无效While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3 ;;;;, $aBtn
Exit
Case $aBtn To $aBtn
MsgBox(0,0,$nMsg)
MsgBox(0, '右边文本', $aBtnx[$nMsg - $aBtn])
If $nMsg = $aBtn Then Exit
EndSwitch
WEnd怎么修改成Func MYGUI_EVENT()
Switch @GUI_CtrlId
Case $GUI_EVENT_CLOSE
Exit
Case $aBtn To $aBtn[$DRVNUM - 1]
Case $aBtn To $aBtn
MsgBox(0,0,$nMsg)
MsgBox(0, '右边文本', $aBtnx[$nMsg - $aBtn])
If $nMsg = $aBtn Then Exit
EndSwitch
EndFunc ; 回复 13# 872777825
afan版主 我是不是有点过了{:face (113):} 回复 14# 872777825 Opt('GUIOnEventMode', 1)
Local $BTXL, $XLlist = 1, $XLspaceX = 60, $XLspaceY = 60, $XLbjx = 170, $XLbjy = 35
Local $BT, $list = 1, $spaceX = 60, $spaceY = 60, $bjx = 350, $bjy = 45
$Form1 = GUICreate('Form1', 623, 442)
GUISetOnEvent(-3, 'MYGUI_EVENT')
Local $aBtn = [['C'],['D'],['E'],['F'],['退出']]
Local $aBtnx = ['本地磁盘1', '本地磁盘2', '本地磁盘3', '本地磁盘4', '本地磁盘5']
For $i = 0 To UBound($BTXL) - 1
$aBtn[$i] = GUICtrlCreateButton($aBtn[$i], $XLspaceX * Mod($i, $XLlist) + $XLbjx, $XLspaceY * Floor($i / $XLlist) + $XLbjy, 160, 35)
GUICtrlSetOnEvent(-1, 'MYGUI_EVENT')
Next
For $i = 0 To UBound($BTXL) - 1
GUICtrlCreateLabel($aBtnx[$i], $spaceX * Mod($i, $list) + $bjx, $spaceY * Floor($i / $list) + $bjy, 160, 35)
Next
GUISetState()
While 1
Sleep(100)
WEnd
Func _Exit()
GUIDelete($Form1)
Exit
EndFunc ;==>_Exit
Func MYGUI_EVENT()
Switch @GUI_CtrlId
Case -3
Exit
Case $aBtn To $aBtn
MsgBox(0, '右边文本', $aBtnx[@GUI_CtrlId - $aBtn])
If @GUI_CtrlId = $aBtn Then Exit
EndSwitch
EndFunc ;==>MYGUI_EVENT
页:
[1]
2