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

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Orus [?]

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

Русское сообщество AutoIt

GUI: Нажатие(Enter) на выбраную строку элемента List
« Отправлен: Декабрь 26, 2009, 15:24:26 »

Оффлайн Guezt Gutsy [?]

  • Продвинутый
  • ***
  • Сообщений: 335
  • Репутация: 81
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
сам код увидеть можно?

Оффлайн gregaz [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1166
  • Репутация: 298
  • Пол: Мужской
    • Награды
Примерно так :
Код: AutoIt [Выделить]
#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()
    $HotKey=@HotKeyPressed
    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
 

Самая большая проблема – её сформулировать. 

Русское сообщество AutoIt

Re: GUI: Нажатие(Enter) на выбраную строку элемента List
« Ответ #2 Отправлен: Декабрь 26, 2009, 16:20:25 »

Оффлайн Yashied [?]

  • AutoIt MVP
  • Глобальный модератор
  • *
  • Сообщений: 5379
  • Репутация: 2700
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Немного по другому...

Код: AutoIt [Выделить]
#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



Думай, прежде чем говорить.

Оффлайн Orus [?]

  • Новичок
  • *
  • Сообщений: 41

  • Автор темы
  • Репутация: 1
  • Пол: Мужской
    • Награды
Yashied, gregaz Пасиб :)

Русское сообщество AutoIt

Re: GUI: Нажатие(Enter) на выбраную строку элемента List
« Ответ #4 Отправлен: Декабрь 28, 2009, 10:49:53 »

Оффлайн Kaster [?]

  • Бритва, Бритва Оккама
  • Глобальный модератор
  • *
  • Сообщений: 4020
  • Репутация: 622
  • Пол: Мужской
  • Мой Аватар, он лучший самый
    • Награды
  • Версия AutoIt: 3.3.14.0
Orus
Тема решена? Не стесняемся нажимать на одноименную кнопочку ;)
Конференция посвященная AutoIt на jabber.ru - [email protected]
Как попасть на конференцию читаем тут


Русское сообщество AutoIt

Re: GUI: Нажатие(Enter) на выбраную строку элемента List
« Ответ #5 Отправлен: Декабрь 28, 2009, 10:59:29 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
4 Ответов
6042 Просмотров
Последний ответ Ноябрь 10, 2010, 01:38:50
от Sp01LeR
4 Ответов
2775 Просмотров
Последний ответ Апрель 08, 2011, 18:04:56
от Kaster
8 Ответов
9744 Просмотров
Последний ответ Май 01, 2011, 17:17:11
от Yashied
5 Ответов
6250 Просмотров
Последний ответ Январь 13, 2012, 16:08:00
от BaRsupillamy
4 Ответов
3084 Просмотров
Последний ответ Март 08, 2014, 21:48:37
от alex33
0 Ответов
1255 Просмотров
Последний ответ Ноябрь 09, 2013, 08:47:03
от madmasles
3 Ответов
1561 Просмотров
Последний ответ Октябрь 19, 2015, 20:12:35
от den23rus
2 Ответов
1649 Просмотров
Последний ответ Октябрь 19, 2015, 11:46:53
от OrangeSound
4 Ответов
1082 Просмотров
Последний ответ Сентябрь 19, 2017, 19:20:15
от Атос
17 Ответов
2420 Просмотров
Последний ответ Май 18, 2018, 10:09:01
от Alofa