Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] отловить двойной клик по GuiCtrlCreateList

Ответить
Настройки темы
[решено] отловить двойной клик по GuiCtrlCreateList

Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Здравствуйте!
Вобщем такой вопросик возник.
Как из этого:
Код: Выделить весь код
#include <GuiConstantsEx.au3>
#include <AVIConstants.au3>
#include <TreeViewConstants.au3>

; GUI
GuiCreate("Sample GUI", 400, 400)

; LIST
$ggg = GuiCtrlCreateList("", 5, 190, 100, 90)
GuiCtrlSetData(-1, "a.Sample|b.List|c.Control|d.Here", "b.List")
GuiCtrlSetData(-1, "")
GuiCtrlSetData(-1, "аенгеаг.Sample|b.List", "b.List")


; GUI MESSAGE LOOP
GuiSetState()
While 1
	$msg = GuiGetMsg()
	If $msg = $GUI_EVENT_CLOSE Then Exit
	If $msg = $ggg Then
		$gggg = GUICtrlRead($ggg)
		MsgBox(0, "", $gggg)
	EndIf
WEnd
сделать так чтобы отлавливалось не одинарное нажатие а двойное? И так же чтобы выводилось?

-------
Хочу научиться писать драйвера на с++


Отправлено: 20:33, 04-04-2009

 

Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
#include <GuiConstantsEx.au3>
#include <AVIConstants.au3>
#include <TreeViewConstants.au3>

#include <Constants.au3>
#include <GUIListBox.au3>
#include <WindowsConstants.au3>

; GUI
GuiCreate("Sample GUI", 400, 400)

; LIST
Global  $ggg = GuiCtrlCreateList("", 5, 190, 100, 90)
GuiCtrlSetData(-1, "a.Sample|b.List|c.Control|d.Here", "b.List")
GuiCtrlSetData(-1, "")
GuiCtrlSetData(-1, "аенгеаг.Sample|b.List", "b.List")
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

; GUI MESSAGE LOOP
GuiSetState()
While 1
    $msg = GuiGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then Exit
;~  If $msg = $ggg Then
;~      $gggg = GUICtrlRead($ggg)
;~      MsgBox(0, "", $gggg)
;~  EndIf
WEnd

Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg
    Local $hWndFrom, $iIDFrom, $iCode, $hWndListBox

    If Not IsHWnd($ggg) Then $hWndListBox = GUICtrlGetHandle($ggg)

    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word

    Switch $hWndFrom
        Case $hWndListBox
            Switch $iCode
                Case $LBN_DBLCLK ; Sent when the user double-clicks a string in a list box
                    _DebugPrint("$LBN_DBLCLK" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
                    ; no return value
                    MsgBox(64, "--> hWndFrom:" & $hWndFrom, "$LBN_DBLCLK")
                Case $LBN_ERRSPACE ; Sent when a list box cannot allocate enough memory to meet a specific request
                    _DebugPrint("$LBN_ERRSPACE" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
                    ; no return value
                Case $LBN_KILLFOCUS ; Sent when a list box loses the keyboard focus
                    _DebugPrint("$LBN_KILLFOCUS" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
                    ; no return value
                Case $LBN_SELCANCEL ; Sent when the user cancels the selection in a list box
                    _DebugPrint("$LBN_SELCANCEL" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
                    ; no return value
                Case $LBN_SELCHANGE ; Sent when the selection in a list box has changed
                    _DebugPrint("$LBN_SELCHANGE" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
                    ; no return value
                Case $LBN_SETFOCUS ; Sent when a list box receives the keyboard focus
                    _DebugPrint("$LBN_SETFOCUS" & @LF & "--> hWndFrom:" & @TAB & $hWndFrom & @LF & _
                            "-->IDFrom:" & @TAB & $iIDFrom & @LF & _
                            "-->Code:" & @TAB & $iCode)
                    ; no return value
            EndSwitch
    EndSwitch
    ; Proceed the default Autoit3 internal message commands.
    ; You also can complete let the line out.
    ; !!! But only 'Return' (without any value) will not proceed
    ; the default Autoit3-message in the future !!!
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND

Func _DebugPrint($s_text)
    $s_text = StringReplace($s_text, @LF, @LF & "-->")
    ConsoleWrite("!===========================================================" & @LF & _
            "+===========================================================" & @LF & _
            "-->" & $s_text & @LF & _
            "+===========================================================" & @LF)
EndFunc   ;==>_DebugPrint
справка по UDF - очень полезная штука )

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:48, 04-04-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Спасибо,
Цитата proxy:
справка по UDF - очень полезная штука ) »
я о таких командах даже не слышал:
Код: Выделить весь код
IsHWnd
BitAND
BitShift
А что такое UDF?

-------
Хочу научиться писать драйвера на с++


Отправлено: 21:09, 04-04-2009 | #3


Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


Цитата:
я о таких командах даже не слышал:
Справка AutoIt > Указатель функций > Преобразование переменных > IsHWnd
- Проверка переменной на принадлежность к типу HWND (т.е. то, что в переменной это хэндл (указатель) на окно или же нет)

Справка AutoIt > Указатель функций > Арифметические функции > BitAND
- Выполнить побитовое логическое умножение AND (для вычисления значений, хороший пример на WinGetState)

Справка AutoIt > Указатель функций > Арифметические функции > BitShift
- Выполнить битовый сдвиг числа (для вычисления значений)

Английская справка Online:
IsHWnd
BitAND
BitShift

Справка по UDF:
<папка установки AutoIt>\UDFs.chm (название файла немного может отличатся)

Все стандартные функции есть в русской справке.
Но необходимо сверяться с английской, т.к. русская справка не по последней версии AutoIt,
со времинем запоминаются отличия, их не много.
Либо сразу "общаться" только с английской.

В справке по UDF (Справка пользовательских функций) содержит не стандартный
функции - они все находятся в Include файлах (<папка установки AutoIt>\Include\).

Маленькая часть UDF есть в русской справке:
Справка AutoIt > Указатель библиотечных функций

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:22, 04-04-2009 | #4


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Скажите ещё пожалуйста как можно удалить элемент из GuiCtrlCreateList?

-------
Хочу научиться писать драйвера на с++


Отправлено: 23:17, 04-04-2009 | #5


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата morgan1991:
как можно удалить элемент из GuiCtrlCreateList? »
См. _GUICtrlListBox_DeleteString функцию в справке.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 23:39, 04-04-2009 | #6


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


Цитата Creat0R:
См. _GUICtrlListBox_DeleteString функцию в справке. »
не я имел ввиду удалить выделенную ячейку.

-------
Хочу научиться писать драйвера на с++


Отправлено: 23:57, 04-04-2009 | #7


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата morgan1991:
я имел ввиду удалить выделенную ячейку »
Неужели так сложно заглянуть в справку и посмотреть пример на эту функцию?

Просто вместо индекса поставить выделенную строку:

Код: Выделить весь код
#include <GuiConstantsEx.au3>
#include <GUIListBox.au3>
;

; Create GUI
GUICreate("List Box Delete String", 400, 300)
$hListBox = GUICtrlCreateList("", 2, 2, 396, 270)

$DeleteString_Button = GUICtrlCreateButton("Delete Selected", 2, 275, 120, 20)

GUISetState()

; Add strings
_GUICtrlListBox_BeginUpdate($hListBox)

For $iI = 1 To 9
    _GUICtrlListBox_AddString($hListBox, StringFormat("%d : List box string", $iI))
Next

_GUICtrlListBox_EndUpdate($hListBox)

; Loop until user exits
While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $DeleteString_Button
            $iSelected_Index = _GUICtrlListBox_GetCurSel($hListBox)

            ; Delete selected string
            _GUICtrlListBox_DeleteString($hListBox, $iSelected_Index)

            ; Select current string
            $iSelected = _GUICtrlListBox_SetCurSel($hListBox, $iSelected_Index)
            If $iSelected = -1 Then _GUICtrlListBox_SetCurSel($hListBox, $iSelected_Index-1)
    EndSwitch
WEnd

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:09, 05-04-2009 | #8


Аватара для morgan1991

Старожил


Сообщения: 398
Благодарности: 13

Профиль | Сайт | Отправить PM | Цитировать


В английской справке сложно чтолибо найти, лично я нашол только это:
Код: Выделить весь код
$temp = GUICtrlRead($hWnd)
_GUICtrlListBox_DeleteString($hWnd, _GUICtrlListBox_SelectString($hWnd, $temp))

-------
Хочу научиться писать драйвера на с++


Отправлено: 00:19, 05-04-2009 | #9


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата morgan1991:
В английской справке сложно чтолибо найти »
В скрипте набираем нужную функцию, ставим на неё курсор, нажимаем F1, и видим справку для этой функции.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:37, 05-04-2009 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] отловить двойной клик по GuiCtrlCreateList

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Отловить форму в IE Lodoss AutoIt 3 26-11-2009 11:12
[решено] Отловить visible text Frost_Imp AutoIt 7 25-09-2009 12:55
Как сделать двойной клик на объекте, без мышки? Twix1124 AutoIt 2 26-07-2009 21:48
[решено] Отловить нажатие по плюсику morgan1991 AutoIt 6 30-06-2009 10:54
Ошибка - [решено] Двойной клик на папку открывает поиск Vahe Microsoft Windows 2000/XP 2 25-01-2009 18:35




 
Переход