Что нового

[Баг] GUISetOnEvent/GUICtrlSetOnEvent, невозможно отключить обработку событий

Tempo

Скриптер
Сообщения
512
Репутация
157
Не работает отключение событий, пример
Код:
;~ AutoIt Version: 3.3.14.5
#include <GUIConstantsEx.au3>
_Test()

While Sleep(10)
WEnd

Func _Test()
	Opt("GUIOnEventMode", 1)
	GUICreate("GUISetOnEvent", 400, 200)
	GUISetOnEvent($GUI_EVENT_CLOSE, "_Event_Close")
	GUISetOnEvent($GUI_EVENT_PRIMARYUP, "_Event_PrimaryUp")
	GUICtrlCreateButton('Disable Event "$GUI_EVENT_PRIMARYUP"', 50, 50, 300, 100)
	GUICtrlSetOnEvent(-1, "_DisableEvent_PrimaryUp")
	GUISetState()
EndFunc   ;==>_Test

Func _DisableEvent_PrimaryUp()
	Local Static $i = 1
;~ 	Local $iRet = GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, "") ;Error in expression
	GUISetOnEvent($GUI_EVENT_PRIMARYUP, "") ;Not work

	ConsoleWrite('!>Disable Event "$GUI_EVENT_PRIMARYUP" #' & $i & @LF)
	$i += 1
EndFunc   ;==>_DisableEvent_PrimaryUp

Func _Event_PrimaryUp()
	Local Static $i = 1
	ConsoleWrite('>Event "$GUI_EVENT_PRIMARYUP" #' & $i & @LF)
	$i += 1
EndFunc   ;==>_Event_PrimaryUp

Func _Event_Close()
	Exit
EndFunc   ;==>_Event_Close
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 331
Re: GUISetOnEvent/GUICtrlSetOnEvent, невозможно отключить обработку событий

Код:
...

Func _DisableEvent_PrimaryUp()
    Local Static $i = 1
    GUISetOnEvent($GUI_EVENT_PRIMARYUP, "_Dummy")

    ConsoleWrite('!>Disable Event "$GUI_EVENT_PRIMARYUP" #' & $i & @LF)
    $i += 1
EndFunc   ;==>_DisableEvent_PrimaryUp

Func _Dummy()
EndFunc

...
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 331
Re: GUISetOnEvent/GUICtrlSetOnEvent, невозможно отключить обработку событий

Ещё можно так:

Код:
#include <GUIConstantsEx.au3>

Global $fPrimaryUp = True
Global $iDisable_Bttn

_Test()

While Sleep(10)
WEnd

Func _Test()
    Opt("GUIOnEventMode", 1)
    GUICreate("GUISetOnEvent", 400, 200)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Event_Close")
    GUISetOnEvent($GUI_EVENT_PRIMARYUP, "_Event_PrimaryUp")
    $iDisable_Bttn = GUICtrlCreateButton('Disable Event "$GUI_EVENT_PRIMARYUP"', 50, 50, 300, 100)
    GUICtrlSetOnEvent(-1, "_DisableEvent_PrimaryUp")
    GUISetState()
EndFunc

Func _DisableEvent_PrimaryUp()
    Local Static $i = 1
    
	$fPrimaryUp = Not $fPrimaryUp
	
	GUICtrlSetData($iDisable_Bttn, ($fPrimaryUp ? 'Disable' : 'Enable') & ' Event "$GUI_EVENT_PRIMARYUP')
    ConsoleWrite('!>' & ($fPrimaryUp ? 'Disable' : 'Enable') & ' Event "$GUI_EVENT_PRIMARYUP" #' & $i & @LF)
	
    $i += 1
EndFunc

Func _Dummy()
EndFunc

Func _Event_PrimaryUp()
	If Not $fPrimaryUp Then
		Return
	EndIf
	
    Local Static $i = 1
    ConsoleWrite('>Event "$GUI_EVENT_PRIMARYUP" #' & $i & @LF)
    $i += 1
EndFunc

Func _Event_Close()
    Exit
EndFunc
 

joiner

Модератор
Локальный модератор
Сообщения
3 062
Репутация
513
Re: GUISetOnEvent/GUICtrlSetOnEvent, невозможно отключить обработку событий

CreatoR
в описании функции написано, для отключения указать пустую строку. в твоем примере функция меняется, но не отключается
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 331
joiner [?]
в описании функции написано, для отключения указать пустую строку
Это где так написано?
Не заметил, в справке.

Видимо баг...
 

joiner

Модератор
Локальный модератор
Сообщения
3 062
Репутация
513
CreatoR, скачал бета версию
-------------------------------------------------------------------------------
[ ] autoit-v3.3.15.1.zip 2018-03-20 12:01 17M

----------------------------------------------------------------------------------
запустил код, все равно не отключается
что не так?
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 331
joiner [?]
запустил код, все равно не отключается
Имелось в виду что для этой версии исправили, т.е мы увидим это изменение в новой (бета?) версии.
 

joiner

Модератор
Локальный модератор
Сообщения
3 062
Репутация
513
не понял. в тикете, вроде как написано, что в бета версии 3.3.15.1 исправлено. а по факту нет?
Исправлено ревизией [12189] в версии: 3.3.15.1
 
Верх