We! 发表于 2009-10-30 11:37:03

GUICtrlCreateCheckbox 反回值

本帖最后由 We! 于 2009-10-31 21:15 编辑

請教一下, GUICtrlCreateCheckbox 只用有開、關功能上的反回值要怎麼寫?

$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 0, 0, 0, 0)
$X1 = GUICtrlCreateInput("X1", 0, 0, 0, 0)

點選複選框後開啟 $X1
GUICtrlSetData($X1, IniRead(Test.ini, "TEST", "KEY", $0))

取消點選後關閉 $X1
GUICtrlSetData($X1, IniRead(Test.ini, "TEST", "KEY", $0))

小弟 查到的都是要在點擊按鍵後再動作,能否就點選時候直接動作,一下開、一下關 這樣呢?

煩請前輩指教一下! 謝謝。

netegg 发表于 2009-10-30 12:28:00

If BitAND(GUICtrlRead($Checkbox1), $GUI_CHECKED) Then
GUICtrlSetState($X1, $gui_enable)
endif

We! 发表于 2009-10-30 21:01:11

小弟沒把問題說的清楚,小弟的錯! 很抱歉。



#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
$Form1 = GUICreate("Form1", 633, 454, 192, 114)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
#Region ### GUI
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 104, 48, 97, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 104, 128, 97, 17)
GUISetState(@SW_SHOW)
#EndRegion # GUI

Func _Exit()
        Exit
EndFunc

While 1
        Sleep(10000) ;這是一個重複的檢查動作
WEnd

;-------- 在這裡做出一個開、關的功能。

Func 、 If、

;--------

while 1

;是一個被開、關的動作。

wend

;------------- 被關閉



小弟 開始學 Autoit 沒多久而已,問的問題有點無聊,

或是錯誤很多的話,還請前輩們多多見諒...。

netegg 发表于 2009-10-30 22:32:51

本帖最后由 netegg 于 2009-10-30 22:34 编辑

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)

$Form1 = GUICreate("Form1", 633, 454, 192, 114)
#Region ### GUI
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 104, 48, 97, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 104, 128, 97, 17)
$X1 = GUICtrlCreateInput("", 300,48, 70, 12)
GUISetState(@SW_SHOW)
while 1
        sleep(100)
WEnd

$nMsg = GuiGetMsg()
do
        Select
                Case $Checkbox1
                        GUICtrlSetState($Checkbox1, $GUI_CHECKED)
                        GUICtrlSetState($X1, $GUI_Enable)
                        GUICtrlSetData($X1, "data")
                        GUICtrlSetState($Checkbox2, $GUI_UNCHECKED)
                        check1()
                Case $Checkbox2
                        GUICtrlSetState($Checkbox2, $GUI_CHECKED)
                        GUICtrlSetData($X1, "")
                        GUICtrlSetState($X1, $GUI_Disable)
                        GUICtrlSetState($Checkbox1, $GUI_UNCHECKED)
                        check2()
    EndSelect
until $GUI_EVENT_CLOSE

       
func check1()
EndFunc
func check2()
EndFunc
大概是这样,我也没试

newx 发表于 2009-10-31 00:17:06

不知道是不是这意思:#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 633, 454, 192, 114)
#Region ### GUI
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 104, 48, 97, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
;$Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 104, 128, 97, 17)
$X1 = GUICtrlCreateInput("X1", 300,48, 70, 17)
GUISetState(@SW_SHOW)
while 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
                Case $GUI_EVENT_CLOSE
                        Exit
                Case $Checkbox1
                        If BitAND(GUICtrlRead($Checkbox1), $GUI_UNCHECKED) Then
                                GUICtrlSetState($X1, $gui_Disable)
                        Else
                                GUICtrlSetState($X1, $gui_enable)
                        endif
        EndSwitch
WEnd

We! 发表于 2009-10-31 06:34:53

本帖最后由 We! 于 2009-10-31 06:42 编辑

嗯嗯! 就是這樣的成效。

但是我只要開啟OnEvent 函數的通知功能。(Opt("GUIOnEventMode", 1))

就會無法作用。


#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
#Region # GUI
$Form1 = GUICreate("Form1", 259, 234, 378, 189)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
$X1 = GUICtrlCreateInput("", 16, 16, 121, 21)
$Y1 = GUICtrlCreateInput("", 16, 40, 121, 21)
$X2 = GUICtrlCreateInput("", 16, 64, 121, 21)
$Y1 = GUICtrlCreateInput("", 16, 88, 121, 21)
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 16, 200, 97, 17)
GUISetState(@SW_SHOW)
#EndRegion # END GUI
Dim $Click = @DesktopDir & "\AutoIt-測試2.ini"
Dim $interval = 1000
Dim $start = 0, $continue = 1
Dim $xy = MouseGetPos()
Dim $0 = Chr ("42")
Func _Exit()
        Exit
EndFunc
While 1
                Sleep($interval)
          GUICtrlSetData($X1, IniRead($Click, "Mouse1", "X", $0))
          GUICtrlSetData($Y1, IniRead($Click, "Mouse1", "Y", $0))
          GUICtrlSetData($X2, IniRead($Click, "Mouse2", "X", $0))
WEnd
       
While $continue ;------------------------------------------------------------------ 複選框 開、關
      Sleep($interval)
      If $start Then
                $xy = MouseGetPos()
                ToolTip("X座標[ "& $xy& " ] , &" ]")
      Else
                ToolTip("按F11開啟、Pause停止。", 0, 0)
      EndIf
WEnd ;-------------------------------------------------------------------------------- 複選框

Func Terminate()
      $continue = 0
EndFunc
Func StartClick()
      $start = 1
EndFunc
Func EndClick()
   $start = 0
EndFunc


我還是把我要的動作大約貼上,怕又說的不清楚!

http://www.dreams8.com/thread-3246-1-1.html
( 梦想吧技术论坛 » 『 脚本技术专栏 』 » GUICtrlCreateCheckbox复选框实例几则 )

這裡面有幾個實例,不過我把錯誤的地方寫好後,還是只有開的做用。

還是人家是沒有錯誤的? 只是我看不懂才會認為有錯誤的地方。

新學 Autoit 問題的怪怪的,還請見諒。

netegg 发表于 2009-10-31 12:33:15

那段源码应该没错,不好意思,上次看错了,以为你要建立两个复选框呢

We! 发表于 2009-10-31 21:13:36

問題解決了,上面那個實例是沒問題的,是我功力太差看不懂而已。

別這麼說! 還是謝謝您的熱心幫忙。
页: [1]
查看完整版本: GUICtrlCreateCheckbox 反回值