Sign in to follow this  
Followers 0
SublimePorte

Check if macro is declared

5 posts in this topic

I want to know whether a function is called by GUICtrlSetOnEvent or not. Is there a way to check if @GUI_CTRLID is set?

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

To your direct question. No.

Don't know what it is you coding. But you seem to make things more complicated than you should. (unless your just experimenting.)

Edited by MvGulik

"Straight_and_Crooked_Thinking" : A "classic guide to ferreting out untruths, half-truths, and other distortions of facts in political and social discussions."
"The Secrets of Quantum Physics" : New and excellent 2 part documentary on Quantum Physics by Jim Al-Khalili. (Dec 2014)

"Believing what you know ain't so" ...

Knock Knock ...
 

Share this post


Link to post
Share on other sites

I want to know whether a function is called by GUICtrlSetOnEvent or not.

One way
;Opt("GUIOnEventMode", 1)

If _IsOnEvent() Then
    $sState = "On"
Else
    $sState = "Off"
EndIf
ConsoleWrite("Event Mode is " & $sState & @LF)

Func _IsOnEvent()
    $iOnEvent = Opt("GUIOnEventMode", 1)
    Opt("GUIOnEventMode", $iOnEvent)
    Return $iOnEvent
EndFunc

Share this post


Link to post
Share on other sites

Don't know what it is you coding. But you seem to make things more complicated than you should. (unless your just experimenting.)

It's a setup tool for a fairly complicated series of steps that need to be done to run a certain testing suite. I am not experimenting, been using AutoIt for about 3 or 4 years now.

I just need to reuse some functions which are quite a decent size, so being able to call them by GuiCtrlSetOnEvent or not, is a must. I don't see why you consider it to be so complicated?

Share this post


Link to post
Share on other sites

SublimePorte,

Perhaps you could use a wrapper function to set a flag when you call your function via OnEvent - something like this: :blink:

#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)

$fOnEvent = False

$hGUI = GUICreate("Test", 500, 500)
GUISetOnEvent($GUI_EVENT_CLOSE, "On_Exit")

$hButton_1 = GUICtrlCreateButton("Test", 10, 10, 80, 30)
GUICtrlSetOnEvent(-1, "Wrapper") ; You really want to call Function here, but go via Wrapper

$hButton_2 = GUICtrlCreateButton("Test", 10, 50, 80, 30)
GUICtrlSetOnEvent(-1, "Wrapper")

GUISetState()

AdlibRegister("Function", 2000)

While 1
    Sleep(10)
WEnd

Func Function() ; This is the function you wanted to call

    If $fOnEvent Then
        ConsoleWrite("I was called via OnEvent from " & @GUI_CtrlId & @CRLF)
    Else
        ConsoleWrite("I was NOT called via OnEvent" & @CRLF)
    EndIf
    $fOnEvent = False

EndFunc

Func Wrapper() ; This is the function you actually call

    $fOnEvent = True
    Function()

EndFunc

Func On_Exit()

    Exit

EndFunc

Any use? ;)

M23


Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______My UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0