Что нового

GUI: Нажатие(Enter) на выбраную строку элемента List

Orus

Чайник
Сообщения
41
Репутация
1
Доброго времени суток.
Имеется массив, отаброженный в List, стрелками вверх/вниз выбирается нужная строка, нажимается Enter и происходит какое-либо действие, например, вылетает сообщение. Если это осуществимо, то как? За ранее спасибо.
 

Guezt

Продвинутый
Сообщения
335
Репутация
81
сам код увидеть можно?
 

gregaz

AutoIT Гуру
Сообщения
1 166
Репутация
298
Примерно так :
Код:
#include <GUIListBox.au3>
#include <GuiConstantsEx.au3>
HotKeySet("{UP}", "HotKey")
HotKeySet("{DOWN}", "HotKey")
HotKeySet("{ENTER}", "HotKey")
Opt("GUIOnEventMode", 1)

$i =0
GUICreate("Test", 400, 296)
$hListBox = GUICtrlCreateList("", 2, 2, 396, 296,$LBS_EXTENDEDSEL)
GUISetOnEvent($GUI_EVENT_CLOSE, "Quit")
GUISetState()

_GUICtrlListBox_BeginUpdate($hListBox)
For $iI = 1 To 9
	_GUICtrlListBox_AddString($hListBox, StringFormat("%03d : Random string", Random(1, 100, 1)))
Next
_GUICtrlListBox_EndUpdate($hListBox)

While 1
	Sleep(50)
WEnd  	

Func HotKey()
	[email protected]
	Switch $HotKey
		Case '{UP}'
			$i-=1
		Case '{DOWN}'
			$i+=1
		Case '{ENTER}'
			$ItemText=_GUICtrlListBox_GetText($hListBox, $i)
			MsgBox (0,$ItemText,'Выполнение действия например : ' & @CRLF & '$ItemText= ' & $ItemText,1)
	EndSwitch
	_GUICtrlListBox_SetSel($hListBox, $i)
EndFunc	

Func Quit()
	Exit
EndFunc ; =====> quit
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5 379
Репутация
2 702
Немного по другому...

Код:
#Include <GUIConstantsEx.au3>
#Include <GUIListBox.au3>
#Include <WinAPI.au3>
#Include <WindowsConstants.au3>

Opt('MustDeclareVars', 1)

Global $hForm, $Msg, $Dummy, $List, $hList

$hForm = GUiCreate('MyGUI', 300, 400)
$List = GUICtrlCreateList('Item 1', 20, 20, 260, 360)
$hList = GUICtrlGetHandle(-1)
For $i = 2 To 9
	GUICtrlSetData(-1, 'Item ' & $i)
Next
$Dummy = GUICtrlCreateDummy()
GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
HotKeySet('{ENTER}', 'HKEnter')
GUISetState()

While 1
	$Msg = GUIGetMsg()
	Switch $Msg
		Case $GUI_EVENT_CLOSE
			ExitLoop
		Case $Dummy
			MsgBox(0, '', _GUICtrlListBox_GetText($hList, GUICtrlRead($Dummy)), 0, $hForm)
	EndSwitch
WEnd

Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)

	Local $Index

    Switch $lParam
		Case $hList
            Switch _WinAPI_HiWord($wParam)
				Case $LBN_DBLCLK
					$Index = _GUICtrlListBox_GetCurSel($hList)
					If ($Index > -1) And (_GUICtrlListBox_GetCaretIndex($hList) = $Index) Then
						GUICtrlSendToDummy($Dummy, $Index)
					EndIf
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND

Func HKEnter()

	Local $Index

	If _WinAPI_GetFocus() = $hList Then
		$Index = _GUICtrlListBox_GetCurSel($hList)
		If $Index > -1 Then
			GUICtrlSendToDummy($Dummy, $Index)
			Return
		EndIf
	EndIf
	HotKeySet('{ENTER}')
	Send('{ENTER}')
	HotKeySet('{ENTER}', 'HKEnter')
EndFunc   ;==>HKEdit
 
Автор
O

Orus

Чайник
Сообщения
41
Репутация
1
Yashied, gregaz Пасиб :smile:
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Orus
Тема решена? Не стесняемся нажимать на одноименную кнопочку ;)
 
Верх