Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] GUICtrlSetState (http://forum.oszone.net/showthread.php?t=129401)

FlatX007 21-01-2009 08:51 1014497

Можно это прописать отдной строкой ???
Код:

GUICtrlSetState($Button1, $GUI_DISABLE)
GUICtrlSetState($Button2, $GUI_DISABLE)
GUICtrlSetState($Button3, $GUI_DISABLE)


Maza Faka 21-01-2009 10:04 1014533

FlatX007
Если элементов много, то можно создать массив с этими элементами:
Код:

#include <GuiConstantsEx.au3>

Global $aButton[12]
Dim $iLeft = 11, $iTop = 11

$hGUI = GUICreate("Test GUI", 269, 200)

For $i = 0 To UBound($aButton) - 1
    $aButton[$i] = GUICtrlCreateButton("Button " & $i + 1, $iLeft, $iTop, 75, 23)
    $iLeft += 85

    If $iLeft >= 200 Then
        $iLeft = 11
        $iTop += 30
    EndIf
Next


$cButton_EnableDisable = GUICtrlCreateButton("Disable", 11, 166, 75, 23)

GUISetState()

While 1
    $msg = GUIGetMsg()
    Switch $msg
        Case $GUI_EVENT_CLOSE
            Exit
        Case
$cButton_EnableDisable
            If GUICtrlRead($cButton_EnableDisable) = "Disable" Then
                _ControlEnableDisableEx($aButton, 0)
                GUICtrlSetData($cButton_EnableDisable, "Enable")
            Else
                _ControlEnableDisableEx($aButton, 1)
                GUICtrlSetData($cButton_EnableDisable, "Disable")
            EndIf
    EndSwitch
WEnd

Func
_ControlEnableDisableEx($aControls, $iState = 1)
    Local $nState = $GUI_ENABLE
    If $iState = 0 Then $nState = $GUI_DISABLE

    For $i = 0 To UBound($aControls) - 1
        GUICtrlSetState($aControls[$i], $nState)
    Next
EndFunc
  ;==>_ControlEnableDisable


FlatX007 21-01-2009 11:17 1014578

Элементов допустим 8 НО !
если я пропишу моим способом то строк будет 8 а твоим способом ОГОГО скока кода, и в том, что ты написал ещё разобраться нужно.

А как попроще можно ???

И у меня тут ещё проблема нарисовалась:
Допусим есть у меня граффическое окно с элементом GUICtrlCreateInput для ввода туда текста, допустим ввёл я туда тескст КАК ??? сделать чтобы это поле очистилось после нажатия на некую кнопку в этом же граффическом окне.

Спасиба.

266903582 21-01-2009 11:54 1014610

FlatX007, в код кнопки допиши GUICtrlSetData($controlid, "")

FlatX007 21-01-2009 12:07 1014621

Чёрд это я стормазил ... над очевидным решением Спасибо работает!

Maza Faka 21-01-2009 12:15 1014626

Цитата:

Цитата FlatX007
если я пропишу моим способом то строк будет 8 а твоим способом ОГОГО скока кода »

А мне лень писать GUICtrlSetState($Button1, $GUI_DISABLE) восемь раз :tongue: да и некрасиво будет выглядеть.
Всё зависит от поставленной задачи: если тебе требуется выполнить вышеуказанные действия единожды, то может быть твой способ будет предпочтителен.

Цитата:

Цитата FlatX007
А как попроще можно ??? »

А кто сказал, что будет легко? (С) :)

Creat0R 21-01-2009 14:21 1014763

Цитата:

Цитата FlatX007
Можно это прописать отдной строкой ? »

Одной нет, но если все переменные такого-же типа, то можно в цикле:

Код:

For $i = 1 To 8
    GUICtrlSetState(Eval("Button" & $i), $GUI_DISABLE)
Next


FlatX007 21-01-2009 17:57 1014949

Creat0R я примерно так себе это представлял .... только незнал как правильно решить - спасибо ты МОЗГ!!


Время: 17:04.

Время: 17:04.
© OSzone.net 2001-