DISABLE/ENABLE EVENTS

 

 

This commands/function prevents re-entry while processing the events of a control or window allowing the use of other controls/functions that generate messages of re-called of events

 

 

Syntax:

 

-    DISABLE [ CONTROL ] EVENT ControlName OF FormName

-    ENABLE  [ CONTROL ] EVENT ControlName OF FormName

-    StopControlEventProcedure ( cControlName, cFormName, lStop )

 

-    DISABLE [ WINDOW ] EVENT OF FormName

-    ENABLE  [ WINDOW ] EVENT OF FormName

-    StopWindowEventProcedure ( cFormName, lStop )

 

 

Complementary Functions:

 

-    GetLastActiveFormIndex ()       --> Return nFormIndex

-    GetLastActiveControlIndex ()    --> Return nControlIndex

 

-    GetFormNameByIndex ( nFormIndex )       ---> Return cFormName

-    GetControlNameByIndex ( nControlIndex ) ---> Return cControlName

 

 

 

Example:

 

#include "hmg.ch"

 

FUNCTION Main

   DEFINE WINDOW Form_1;

      AT 0,0;

      WIDTH 400;

      HEIGHT 300;

      ON GOTFOCUS Form_ONGOTFOCUS();

      MAIN

 

      @ 50,  50 BUTTON Button_1 CAPTION "Click" ACTION MsgInfo ("Hello")

      @ 100, 50 BUTTON Button_2 CAPTION "Minimize" ACTION Form_1.Minimize

      @ 150, 50 TIMEPICKER TimePicker_1 ON GOTFOCUS Control_ONGOTFOCUS ()

 

   END WINDOW

   CENTER WINDOW Form_1

   ACTIVATE WINDOW Form_1

RETURN

 

PROCEDURE Form_ONGOTFOCUS

LOCAL i := GetLastActiveControlIndex ()

   DISABLE WINDOW EVENT OF Form_1

   MsgInfo ("ON GOTFOCUS: Form_1 " + IIF (i > 0," - Last Control Focused: "+ GetControlNameByIndex(i), ""))

   ENABLE WINDOW EVENT OF Form_1

RETURN

 

PROCEDURE Control_ONGOTFOCUS

LOCAL i := GetLastActiveFormIndex ()

      DISABLE WINDOW EVENT OF Form_1                  //   -->   StopWindowEventProcedure ("Form_1", .T.)

      DISABLE CONTROL EVENT TimePicker_1 OF Form_1    //   -->   StopControlEventProcedure ("TimePicker_1", "Form_1", .T.)

 

      MsgInfo ("ON GOTFOCUS: TimePicker_1" + IIF (i > 0," - Last Form Focused: "+ GetFormNameByIndex(i), ""))

 

      ENABLE CONTROL EVENT TimePicker_1 OF Form_1     //   -->   StopControlEventProcedure ("TimePicker_1", "Form_1", .F.)

      ENABLE WINDOW EVENT OF Form_1                   //   -->   StopWindowEventProcedure ("Form_1", .F.)

RETURN