Older Newer
Fri, 06 Dec 2019 03:07:37 . . . . SyneRyder [First function definition]


Changes by last author:

Added:
= setDialogEvent =

== Syntax ==

int setDialogEvent(int state)

== Arguments ==

:state

::An integer of bitwise flags of events to enable. Set to 1 to enable Init events, 2 to enable Cancel events, 4 to enable Keypress events.

== Return ==

Always returns true.

== Description ==

Enables certain dialog events to be processed / triggered in your own FilterMeister code. You can use this function to handle when keys are pressed while your filter dialog has user focus, to run some code when the filter is first initialized, or to run some code before the Cancel button/event is processed.

== Comment ==

Note that setDialogEvent can only enable events, it cannot remove / deregister / clear them. To clear an event hook, you must use clearDialogEvent. (Behind the scenes, setDialogEvent does a bitwise-OR operation against the internal event state variable, to ensure that previously set bits enabling events remain enabled.)

There appears to be a bug in Beta 9g and possibly newer FilterMeister versions that prevents FME_CANCEL events from being processed in code, even if you use this function to enabled Cancel events.

== Example ==

<code>

ctl[0]: CHECKBOX, "Enable Init Events"

ctl[1]: CHECKBOX, "Enable Cancel Events"

ctl[2]: CHECKBOX, "Enable Keypress Events"

ctl[4]: STATICTEXT, ""

ctl[5]: STATICTEXT, ""

OnCtl(n): {

if (e == FME_INIT) {

Info("The Init event was intercepted.");

return true;

}

if (e == FME_CANCEL) {

Info("Cancel event was intercepted!");

return true;

}

if (e == FME_KEYDOWN) {

printf("Key down!");

return true;

}

if (n >= 0 && n<=2 && e == FME_CLICKED) {

int statevalue = ctl(0)*1 + ctl(1)*2 + ctl(2)*4;

// Enable events we turned on

setDialogEvent( statevalue );

sprintf(str1, "setDialogEvent(%d) called", statevalue);

setCtlText(4, str1);

// Clear events that we turned off

clearDialogEvent( statevalue ^ 7); // Use bitwise XOR

sprintf(str2, "clearDialogEvent(%d) called", statevalue ^ 7);

setCtlText(5, str2);

}

return false;

}

</code>

== See Also ==

clearDialogEvent, FME_INIT, FME_CANCEL, FME_KEYDOWN, FME_KEYUP