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

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;
}

See Also

clearDialogEvent, FME_INIT, FME_CANCEL, FME_KEYDOWN, FME_KEYUP