Что нового

Можно ли изменить состояние элемента: Combo, Input и других

dr.room

Новичок
Сообщения
283
Репутация
0
Всем привет
Такой вопрос: как можно отменить выбор элемент списка, но не кликом по списку а нажатием кнопки "Отменить выбор". Это может оказаться полезным, имхо, если списков много, и нужно их за раз все "обнулить"
Пример
Код:
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global Const $sIni = @ScriptDir & "\config.ini"


#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 421, 182, 307, 148)
$Combo1 = GUICtrlCreateCombo("", 128, 32, 145, 25, BitOR($CBS_DROPDOWNLIST,$WS_VSCROLL))
$fTime = IniRead($sIni, "etap1", "vipolnenie", "")
$IData1 = GUICtrlSetData($Combo1, "элемент1|элемент2|элемент3|элемент4",$fTime)

$Button1 = GUICtrlCreateButton("Отменить выбор", 128, 104, 139, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

		Case	$Combo1
			$sRead1 = GUICtrlRead($Combo1)
			IniWrite($sIni, "etap1", "vipolnenie", $sRead1)
		Case $Button1

	EndSwitch
WEnd
GUIDelete($hGUI)
Потому что для элементов как Checkbox это удается
Пример
Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=Form1.kxf
$Form1 = GUICreate("Form1", 285, 241, 192, 132)
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 88, 24, 97, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 88, 64, 97, 17)
$Checkbox3 = GUICtrlCreateCheckbox("Checkbox3", 88, 104, 97, 17)
$Button1 = GUICtrlCreateButton("Выбрать  все ", 87, 152, 107, 25)
$Button2 = GUICtrlCreateButton("Отменить все ", 87, 184, 115, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

		Case $Button1
			GUICtrlSetState($Checkbox1,$GUI_CHECKED)
			GUICtrlSetState($Checkbox2,$GUI_CHECKED)
			GUICtrlSetState($Checkbox3,$GUI_CHECKED)
		Case $Button2
			GUICtrlSetState($Checkbox1,$GUI_UNCHECKED)
			GUICtrlSetState($Checkbox2,$GUI_UNCHECKED)
			GUICtrlSetState($Checkbox3,$GUI_UNCHECKED)


	EndSwitch
WEnd
Спасибо
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Re: Можно ли изменить состояние элемента Combo

Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ComboConstants.au3>

Global $g_iCombo, $g_iButton

GUICreate("Пример", 400, 200)
$g_iCombo = GUICtrlCreateCombo(Null, 100, 10, 200, 20, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $WS_VSCROLL))
GUICtrlSetData(-1, "1|2|3|4", Random(1, 4, 1))
$g_iButton = GUICtrlCreateButton("Отменить выбор", 125, 120, 150, 30)
GUICtrlSetState(-1, $GUI_DEFBUTTON)
GUISetState()

While 1
	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			Exit
		Case $g_iButton
			GUICtrlSendMsg($g_iCombo, $CB_SETCURSEL, -1, 0)
	EndSwitch
WEnd
 
Автор
D

dr.room

Новичок
Сообщения
283
Репутация
0
Спасибо большое, Tempo!
А как насчет элемента Input? Удастся удалить содержимое по кнопке?
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=Form1.kxf
$Form1 = GUICreate("Form1", 264, 256, 395, 139)
GUISetFont(10, 800, 0, "MS Sans Serif")
$Input1 = GUICtrlCreateInput("Вводный текст", 49, 64, 169, 28)
$Label1 = GUICtrlCreateLabel("Тест ", 107, 24, 48, 24)
$Button1 = GUICtrlCreateButton("ок ", 94, 136, 75, 25)
$Button2 = GUICtrlCreateButton("Сброс ", 94, 200, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

		Case $Button1
			ExitLoop

		Case $Button2

	EndSwitch
WEnd
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $g_iInput, $g_iButton

GUICreate("Пример", 400, 200)
$g_iInput = GUICtrlCreateInput(Random(0, 65535, 1), 100, 10, 200, 20)
$g_iButton = GUICtrlCreateButton("Отменить выбор", 125, 120, 150, 30)
GUICtrlSetState(-1, $GUI_DEFBUTTON)
GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $g_iButton
            GUICtrlSetData($g_iInput, Null)
    EndSwitch
WEnd
 
Автор
D

dr.room

Новичок
Сообщения
283
Репутация
0
Спасибо большое,Tempo
Все получилось, только перейдя по ссылке - я не нашел описание ключевого слова Null почему-то. Это что-то связанное с обнулением значения?
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
dr.room, если параметр строковый (как в этом случае) Null обозначает пустую строку ""
 
Верх