Что нового

Скрыть сразу несколько элементов

Nefakt

Новичок
Сообщения
74
Репутация
3
Всем привет.
У меня такой вопрос, как можно скрыть сразу несколько элементов?
Сейчас делаю так
Код:
GUICtrlSetState($uTorrent, $GUI_HIDE)
			GUICtrlSetState($Open, $GUI_HIDE)
			GUICtrlSetState($Game, $GUI_HIDE)
			GUICtrlSetState($Pic1, $GUI_HIDE)
			GUICtrlSetState($PlayGraund, $GUI_HIDE)
			GUICtrlSetData($Description, '')
			GUICtrlSetState($Description, $GUI_ENABLE)
			GUICtrlSetState($EditIcon, $GUI_HIDE)
			GUICtrlSetState($SaveEdit, $GUI_HIDE)
			GUICtrlSetState($EditPic, $GUI_HIDE)
			GUICtrlSetState($EditGames, $GUI_HIDE)

Хотелось бы укоротить.
Заранее спасибо.
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Nefakt
Как вариант:
Код:
GUICtrlSetState2( $GUI_HIDE, $uTorrent, $Open, $Game, $Pic1, $PlayGraund, $EditIcon, $SaveEdit, $EditPic, $EditGames )

Func GUICtrlSetState2( $iState, $i1, $i2 = 0, $i3 = 0, $i4 = 0, $i5 = 0, $i6 = 0, $i7 = 0, $i8 = 0, $i9 = 0 )
	Local $aCtrl[9] = [$i1, $i2, $i3, $i4, $i5, $i6, $i7, $i8, $i9 ], $Idx
	; ---
	For $Idx = 0 To @NumParams - 2 Step 1
		GUICtrlSetState( $aCtrl[$Idx], $iState )
	Next
EndFunc


Функция GUICtrlSetState2 может принять от 1 до 9 элементов, однако вы можете увеличить это значение.
 

---Zak---

Скриптер
Сообщения
455
Репутация
120
Мой вариант:

Код:
Local $aArray = [$uTorrent, $Open, $Game,$Pic1, $PlayGraund, $EditIcon, $SaveEdit, $EditPic, $EditGames]
_MY_GUICtrlSetState($aArray, $GUI_HIDE)

_MY_GUICtrlSetState($Description, $GUI_ENABLE)

Func _MY_GUICtrlSetState($aArray = False, $aStatus = False)
	If ($aArray = False) Then Return SetError(3, 10, "_MY_GUICtrlSetState: $aArray - parameter is not variable.")
	If ($aStatus = False) Then Return SetError(3, 10, "_MY_GUICtrlSetState: $Status - parameter is not variable.")

	If IsArray($aArray) Then
		For $i = 0 To UBound($aArray) - 1
			GUICtrlSetState($aArray[$i], $aStatus)
		Next
	Else
		GUICtrlSetState($aArray, $aStatus)
	EndIf
EndFunc
 

joiner

Модератор
Локальный модератор
Сообщения
3,570
Репутация
632
все контролы имеют свой порядковый ID. то есть, как идет создание окна в нашем скрипте, так и нумеруются (получают ID) элементы. поэтому мы можем обращаться к элементам по номеру. соответственно , если в нашем коде используется массовое, к примеру, скрытие элементов, то и скрипт можно строить исходя из того, что я сказал выше. пример

Код:
#include <GUIConstantsEx.au3>
$Form1 = GUICreate("Form1", 180, 184, 192, 124)
$Label1 = GUICtrlCreateLabel("Label1", 24, 20, 36, 17)
$Label2 = GUICtrlCreateLabel("Label2", 24, 48, 36, 17)
$Label3 = GUICtrlCreateLabel("Label3", 24, 76, 36, 17)
$Label4 = GUICtrlCreateLabel("Label4", 24, 104, 36, 17)
$Label5 = GUICtrlCreateLabel("Label5", 24, 132, 36, 17)
$Button1 = GUICtrlCreateButton("HIDE", 88, 24, 51, 25)
$Button2 = GUICtrlCreateButton("SHOW", 88, 128, 51, 25)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case  8
			For $i = 3 To 7
				GUICtrlSetState($i, $GUI_HIDE)
			Next
		Case 9
			For $i = 3 To 7
				GUICtrlSetState($i, $GUI_SHOW)
			Next
	EndSwitch
WEnd

в принципе, это как раз реализовано в коде firex.
но, повторюсь, все можно учесть в начале построения кода, чтобы потом не писать дополнительные функции
 
Верх