邪恶海盗 发表于 2012-4-15 19:31:14

[已解决]关于检测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

netegg 发表于 2012-4-15 19:36:39

不明白,lz问操作的问题连代码都不上吗?

haijie1223 发表于 2012-4-15 19:43:21

回复 2# netegg


    建议楼主先去学帮助。。。。

user3000 发表于 2012-4-15 20:24:17

回复 1# 邪恶海盗
多点耐心看下帮助文档, 就能整明白了, 为什么现在的人总是没耐心?
花点时间在论坛搜索一下相关内容也就有了不少相关示例, 为什么更多的人是愿意把时间花在发帖及等待上面呢?
是时代不同了? 我等落伍了罢!?

zldfsz 发表于 2012-4-15 20:24:22

查看帮助GUICtrlRead

魔导 发表于 2012-4-15 20:52:42

楼主的意思是   用单选来控制   输入 的 数字?

vigiles 发表于 2012-4-15 21:06:32

相比之下多是回答问题的老师没耐心…(或者仅仅是回复)所有人都是从新手过来的,多多谅解些吧!

魔导 发表于 2012-4-15 21:08:23

小弟在论坛找了个源码,也许有用,偶去吃饭先。
#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

afan 发表于 2012-4-15 21:21:39

相比之下多是回答问题的老师没耐心…(或者仅仅是回复)所有人都是从新手过来的,多多谅解些吧!
vigiles 发表于 2012-4-15 21:06 http://www.autoitx.com/images/common/back.gif


    提问方式与是否是新手无任何联系。

netegg 发表于 2012-4-15 22:29:08

本帖最后由 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:21:43

本帖最后由 邪恶海盗 于 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输入框的数据怎么在点选的时候自动刷新...

感谢魔导提供的思路,高中毕业水平且从来没学过编程的表示鸭梨山大...

user3000 发表于 2012-4-16 21:35:59

回复 11# 邪恶海盗

"现在的问题是GUICtrlCreateInput输入框的数据怎么在点选的时候自动刷新..."
控件数据刷新要自己刷新, 自动刷新要注册系统信息:
GuiCtrlSetData('控件ID', '(新)数据')

502762378 发表于 2012-4-16 21:40:15

自己再收拾收拾还可以更好看
#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


邪恶海盗 发表于 2012-4-16 22:58:22

回复 13# 502762378


    脚本没问题,不过好像不能手动输入了,自动刷新的时候会刷掉...

netegg 发表于 2012-4-16 23:25:12

本帖最后由 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
查看完整版本: [已解决]关于检测GUICtrlCreateRadio状态并执行相应的代码的用法,求指导