В AL-IV - единственная возможность обработать события визуальных элементов формы, это переопределить в своей форме соответствующие методы формы, например, click, key_press, mouse_move, timer и т.д.
Для случаев наследования контрольных элементов, некоторые события вызываются в самих контрольных элементах (например, движения мыши). Они так же реализованы как защищенные CALLBACK-методы.
Как и все методы, начинающиеся со строчной буквы, эти методы являются защищёнными. Они так же помечены маркером CALLBACK, т.е. не предназначены для вызова самим кодом пользователя. (Это ограничение не наследуется в производном классе, защищая только сам прототип метода от неправильного использования).
<...>
Если в вашем коде происходят какие-либо изменения формы, это может приводить к рекурсии в этом случае. Простейший способ обхода проблемы - установка дополнительного флажка (поля формы типы BOOL), на время операции. Например, оператором PUSH флажок = TRUE: ... ; И, конечно, отказом от входа в повторную обработку при установленном флажке. Псевдо-код:
BOOL flag|_working_nowOVERRIDE event_name:
CASE flag ? ==> ; ▄▄▄▄▄
PUSH flag = TRUE: ▄▄▄▄▄
// YOUR CODE HERE █
; . ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
Очевидно, это не трудно автоматизировать. Не хватает соотв. модификатора для наследуемой антирекурсии.
Под каким соусом следует подавать: в Делфи нужно заниматься вот этой ерундой, а тут в библиотечных компонентах за нас уже подумали.