Что нового

[Элементы GUI] Combo получить предыдущее значение

Krokodile

Новичок
Сообщения
43
Репутация
1
При смене значения элемента Combo(не редактируемый) надо получить предыдущее значение. Можно ли такое реализовать без использования переменной?
Иначе говоря - какие сообщения можно передавать элементу Combo с помощью GUICtrlSendMsg?
 

ynbIpb

Скриптер
Сообщения
399
Репутация
110
Какой вопрос. такой ответ.
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiComboBox.au3>

$Form1 = GUICreate("Form1", 202, 134, 192, 124)
$Combo1 = GUICtrlCreateCombo("", 16, 16, 169, 25, BitOR($GUI_SS_DEFAULT_COMBO,$CBS_DROPDOWNLIST,$CBS_DISABLENOSCROLL))
GUICtrlSetData ($Combo1, "value1|value2|value3|value4|value5|value6|value7|value8", "value6")
$Button1 = GUICtrlCreateButton("Previous", 112, 72, 75, 25)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			$iCurSel = _GUICtrlComboBox_GetCurSel($Combo1)
			If $iCurSel > 0 Then
				_GUICtrlComboBox_SetCurSel($Combo1, $iCurSel - 1)
			EndIf
	EndSwitch
WEnd

Я нифига не понял, что нужно афтору. Вобщем этот код показывает предыдущий элемент в комбо.
 
Автор
K

Krokodile

Новичок
Сообщения
43
Репутация
1
да, наверно непонятно написал.. Объясню на примере:
Шаг 1. Выбран элемент 4
Шаг 2. Выбирается элемент 7
Шаг 3. Выбирается элемент 3

Нужно, чтобы на втором шаге выдало "предыдущий элемент - 4", на третьем шаге - 7.
 

snoitaleR

AutoIT Гуру
Сообщения
855
Репутация
223
Krokodile
Я понял так:

Код:
; НАЧАЛО

 $GUI=GUICreate("")
 $LABEL=GUICtrlCreateLabel("Предыдущее состояние",10,10,150,25)
 $COMBO=GUICtrlCreateCombo("",10,35,150,25,0x3)
 GUICtrlSetData($COMBO,"не редактируемый|элемент1|элемент2|элемент3|элемент4|Отсчёт с 0","не редактируемый")
 $STATE="не редактируемый"
 GUISetState()

 While Sleep(100)
  Switch GUIGetMsg()
   Case -3
    ExitLoop
   Case $COMBO
    GUICtrlSetData($LABEL,$STATE)
    $STATE=GUICtrlRead($COMBO)
  EndSwitch
 WEnd

; КОНЕЦ
 

AZJIO

Меценат
Меценат
Сообщения
2,879
Репутация
1,194
Krokodile
Можно ли такое реализовать без использования переменной?
Посмотри WM_COMMAND в _GUICtrlComboBox_Create. Там есть событие в момент клика. Но использование кэширования с помощью переменной обходится дешевле в плане количества кода и в плане постоянного срабатывания WM_COMMAND.
 
Верх