[已解决]关于检测GUICtrlCreateRadio状态并执行相应的代码的用法,求指导
本帖最后由 邪恶海盗 于 2012-4-21 19:36 编辑以下为截取的一段代码,求高手指导...
$Radio1=GUICtrlCreateRadio("方式一", 32, 65)
$Radio2=GUICtrlCreateRadio("方式二", 105, 65)
GUICtrlCreateInput($e, 31, 85, 165, 30)
默认选择1,同时检测三个按键的状态,若选中1则$e=5;若选中2则$e=6 不明白,lz问操作的问题连代码都不上吗? 回复 2# netegg
建议楼主先去学帮助。。。。 回复 1# 邪恶海盗
多点耐心看下帮助文档, 就能整明白了, 为什么现在的人总是没耐心?
花点时间在论坛搜索一下相关内容也就有了不少相关示例, 为什么更多的人是愿意把时间花在发帖及等待上面呢?
是时代不同了? 我等落伍了罢!? 查看帮助GUICtrlRead 楼主的意思是 用单选来控制 输入 的 数字? 相比之下多是回答问题的老师没耐心…(或者仅仅是回复)所有人都是从新手过来的,多多谅解些吧! 小弟在论坛找了个源码,也许有用,偶去吃饭先。
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
$Form1 = GUICreate("Form1", 223, 249, 445, 117)
$LabelPrefix = GUICtrlCreateLabel("电脑名称前缀", 24, 64, 76, 17, BitOR($SS_CENTER, $SS_CENTERIMAGE))
$Labelbjxh = GUICtrlCreateLabel("本机序号", 24, 96, 50, 17, BitOR($SS_CENTER, $SS_CENTERIMAGE))
$Labelbjmc = GUICtrlCreateLabel("本机名称", 24, 32, 48, 20, $SS_CENTERIMAGE)
$InputPrefix = GUICtrlCreateInput("电脑", 104, 64, 100, 21)
$Inputbjxh = GUICtrlCreateInput("01", 104, 96, 100, 21)
Local $dnmc1,$dnmc2,$dnmc3
$dnmc1=GUICtrlRead ( $InputPrefix )
$dnmc2=GUICtrlRead ( $Inputbjxh )
$Inputbjmc = GUICtrlCreateInput($dnmc1&$dnmc2, 104, 32, 100, 21)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
$dnmc1=GUICtrlRead ( $InputPrefix )
$dnmc2=GUICtrlRead ( $Inputbjxh )
$dnmc3=GUICtrlRead ( $Inputbjmc )
If $dnmc3 <> $dnmc1&$dnmc2 Then GUICtrlSetData ( $Inputbjmc , $dnmc1&$dnmc2 )
WEnd 相比之下多是回答问题的老师没耐心…(或者仅仅是回复)所有人都是从新手过来的,多多谅解些吧!
vigiles 发表于 2012-4-15 21:06 http://www.autoitx.com/images/common/back.gif
提问方式与是否是新手无任何联系。 本帖最后由 netegg 于 2012-4-16 05:18 编辑
相比之下多是回答问题的老师没耐心…(或者仅仅是回复)所有人都是从新手过来的,多多谅解些吧!
vigiles 发表于 2012-4-15 21:06 http://www.autoitx.com/images/common/back.gif
问问题的问不明白难道说会回答的人没耐心吗,是不是有点本末倒置了
另外,难道你看的懂问题?三个按键在什么地方?是控件还是模拟按键?如果是前者,这三行代码里找来找去也就找到两个按键类的控件,试问这是谁的问题?
总不至于把input也作为按键类控件算吧,那就多了,可不至三个了 本帖最后由 邪恶海盗 于 2012-4-16 21:23 编辑
#include <GUIConstantsEx.au3>
#NoTrayIcon
#Region ### START Koda GUI section ### Form=
$WinMain = GUICreate("Example", 270, 215)
$e1 = ("5")
$e2 = ("6")
$e3 = ("7")
$Radio1 = GUICtrlCreateRadio("方式一", 32, 65)
$Radio2 = GUICtrlCreateRadio("方式二", 105, 65)
$Radio3 = GUICtrlCreateRadio("方式三", 168, 65)
GUICtrlSetState($Radio1, $GUI_CHECKED)
If GUICtrlRead($Radio1) = $GUI_CHECKED Then $e = $e1
If GUICtrlRead($Radio2) = $GUI_CHECKED Then $e = $e2
If GUICtrlRead($Radio3) = $GUI_CHECKED Then $e = $e3
GUICtrlCreateInput($e, 31, 85, 165, 30)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
自己捣腾了一下,成功了,现在的问题是GUICtrlCreateInput输入框的数据怎么在点选的时候自动刷新...
感谢魔导提供的思路,高中毕业水平且从来没学过编程的表示鸭梨山大... 回复 11# 邪恶海盗
"现在的问题是GUICtrlCreateInput输入框的数据怎么在点选的时候自动刷新..."
控件数据刷新要自己刷新, 自动刷新要注册系统信息:
GuiCtrlSetData('控件ID', '(新)数据') 自己再收拾收拾还可以更好看
#include <GUIConstantsEx.au3>
#NoTrayIcon
#Region ### START Koda GUI section ### Form=
Local $e
$WinMain = GUICreate("Example", 270, 215)
$e1 = ("5")
$e2 = ("6")
$e3 = ("7")
$Radio1 = GUICtrlCreateRadio("方式一", 32, 65)
$Radio2 = GUICtrlCreateRadio("方式二", 105, 65)
$Radio3 = GUICtrlCreateRadio("方式三", 168, 65)
GUICtrlSetState($Radio1, $GUI_CHECKED)
AdlibRegister("MyAdlib")
$sinput = GUICtrlCreateInput($e, 31, 85, 165, 30)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$msg = GUIGetMsg()
Switch $msg
Case-3
Exit
EndSwitch
WEnd
Func MyAdlib()
If GUICtrlRead($Radio1) = $GUI_CHECKED Then GUICtrlSetData($sinput,$e1)
If GUICtrlRead($Radio2) = $GUI_CHECKED Then GUICtrlSetData($sinput,$e2)
If GUICtrlRead($Radio3) = $GUI_CHECKED Then GUICtrlSetData($sinput,$e3)
EndFunc
回复 13# 502762378
脚本没问题,不过好像不能手动输入了,自动刷新的时候会刷掉... 本帖最后由 netegg 于 2012-4-16 23:41 编辑
还纠结呢
while 1
switch $msg
case $radio1
If guictrlread($radio1) = 1 Then ;1选中
if bitand(guictrlread($radio2), guictrlread(radio3)) = 1 then
consolewrite('1,2,3全选')
else
if guictrlread($radio2) = 1 Then
ConsoleWrite('1,2选中')
Else
ConsoleWrite('1,3选中')
EndIf
endif
Else
If bitand(guictrlread($radio2), guictrlread(radio3)) = 1 then
ConsoleWrite('2,3选中')
else
if guictrlread($radio2) = 1 Then
ConsoleWrite('2选中')
Else
ConsoleWrite('3选中')
EndIf
endif
Endif
..................
这只是第一个单选点击后选中的情况,剩下的一样
tmd, 就两个单选呀,想多了
while 1
switch $msg
case $radio1
If guictrlread($radio1) = 1 Then ;1选中bi
if guictrlread($radio2) = 1 then
consolewrite('1,2全选')
else
ConsoleWrite('1选中')
EndIf
endif
Else
if guictrlread($radio2) = 1 then
consolewrite('2选中')
else
ConsoleWrite('无选中')
EndIf
Endif
..................
页:
[1]
2