PDA

Показать полную графическую версию : [решено] GUICtrlSetState


FlatX007
21-01-2009, 08:51
Можно это прописать отдной строкой ???

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

Maza Faka
21-01-2009, 10:04
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
Элементов допустим 8 НО !
если я пропишу моим способом то строк будет 8 а твоим способом ОГОГО скока кода, и в том, что ты написал ещё разобраться нужно.

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

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

Спасиба.

266903582
21-01-2009, 11:54
FlatX007, в код кнопки допиши GUICtrlSetData($controlid, "")

FlatX007
21-01-2009, 12:07
Чёрд это я стормазил ... над очевидным решением Спасибо работает!

Maza Faka
21-01-2009, 12:15
если я пропишу моим способом то строк будет 8 а твоим способом ОГОГО скока кода »
А мне лень писать GUICtrlSetState($Button1, $GUI_DISABLE) восемь раз :tongue: да и некрасиво будет выглядеть.
Всё зависит от поставленной задачи: если тебе требуется выполнить вышеуказанные действия единожды, то может быть твой способ будет предпочтителен.

А как попроще можно ??? »
А кто сказал, что будет легко? (С) :)

Creat0R
21-01-2009, 14:21
Можно это прописать отдной строкой ? »
Одной нет, но если все переменные такого-же типа, то можно в цикле:


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

FlatX007
21-01-2009, 17:57
Creat0R я примерно так себе это представлял .... только незнал как правильно решить - спасибо ты МОЗГ!!




© OSzone.net 2001-2012