Что нового

[Элементы GUI] Как очистить все поля GUICtrlCreateInput

panda_911

Только вверх, только вперед!
Сообщения
52
Репутация
8
Здравствуйте.
Есть форма Gui с неким количеством "GUICtrlCreateInput"
Нужна кнопка которая бы очищала их (сбрасывала по умолчанию если там таковое было задано)
Буду очень признателен за помощь
 

Pelerin

Осваивающий
Сообщения
81
Репутация
23
panda_911
Как-то так.
Код:
#include<GUIConstants.au3> ; надо для $gui_event_close
$gui = GUICreate(@ScriptName)

Dim $input[11][2] ; Двухмерный массив: $input[$i][0] - для id элементов GUI; $input[$i][1] - для дефолтного значения GUI элементов
; Рисуем нужные элементы GUI. Не принципиально как, лишь бы $input[$i][0] получил id элемента, а $input[$i][1] содержал дефолтное состояние.
; Можно также создавать разного типа элементы.
; В цикле было удобнее.
$height = 20
$y = 5
For $i = 1 To 10
	$input[$i][1] = 'Дефолт_'&$i
	$input[$i][0] = GUICtrlCreateInput($input[$i][1], 5, $y, 200, $height)
	$y = $height+$y
Next
;//

$button = GUICtrlCreateButton('Сброс', 5, $y, 200, $height) ; рисуем кнопку для сброса

GUISetState(@SW_SHOW)
While 1
	$msg = GUIGetMsg() ; получаем сообщение Windows окну $GUI
	Switch $msg
		Case $gui_event_close ; если клацнули на крестик - то закрыться
			Exit
		Case $button ; если клацнули на кнопку - то выставить всем инпутам дефолт
			For $i = 1 To 10
				GUICtrlSetData ($input[$i][0], $input[$i][1])
			Next
	EndSwitch
WEnd
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
panda_911,
Как очистить все поля GUICtrlCreateInput
Код:
#include <Array.au3>

Global $Inputs[9]

$Form1 = GUICreate("Form1", 424, 291)
$Button1 = GUICtrlCreateButton("Очистеть", 152, 240, 75, 25)
$Inputs[0] = GUICtrlCreateInput("111111", 16, 48, 121, 21)
$Inputs[1] = GUICtrlCreateInput("222222", 152, 48, 257, 21)
$Inputs[2] = GUICtrlCreateInput("333333", 72, 80, 225, 21)
$Inputs[3] = GUICtrlCreateInput("444444", 16, 120, 121, 21)
$Inputs[4] = GUICtrlCreateInput("555555", 152, 120, 257, 21)
$Inputs[5] = GUICtrlCreateInput("666666", 80, 152, 225, 21)
$Inputs[6] = GUICtrlCreateInput("777777", 24, 192, 121, 21)
$Inputs[7] = GUICtrlCreateInput("888888", 160, 192, 257, 21)
$Inputs[8] = GUICtrlCreateInput("999999", 72, 8, 225, 21)
GUISetState()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case -3
			Exit
		Case $Button1
			For $i = 0 To _ArrayMaxIndex($Inputs)
				GUICtrlSetData($Inputs[$i], '')
			Next
	EndSwitch
WEnd


Pelerin,
У меня ваш код не работает.
 
Автор
P

panda_911

Только вверх, только вперед!
Сообщения
52
Репутация
8
Спасибо за подсказки, проблему решил!
 

Ganibal95

GreenBytes
Сообщения
877
Репутация
240
Код:
ShellExecute(@ProgramFilesDir & "\AutoIt3\AutoIt.chm")

Почаще это запускай :smile:
 
Автор
P

panda_911

Только вверх, только вперед!
Сообщения
52
Репутация
8
Справкой конечно пользуюсь. Но не всегда могу правильно сформулировать вопрос.
А справка увы не обладает телепатическими свойствами:(
 
Верх