Привязать к элементу управления функцию - обработчик события или задать имя конечной функции для обработки события.

ts_dialogcontrol(int iButtonDescr, "eventreaction", string eventfunctionname [, string eventfunctionname_more]);

Здесь:

eventfunctionname - имя функции, которая обрабатывает событие.

eventfunctionname_more - имя конечной функции, которая будет вызываться при событии eventfunctionname  (не обязательно, просто бывает удобно объединить реакцию на различные события в различных элементах в одну функцию).


Пример. Чтобы обработать реакцию на нажатие кнопки создайте функцию:


int iDialogDescr, iButtonZoom;
int main()
{
...// создать окно диалога
    int x, y, w, h;
    x=1,y=1, w=200; h = 200;
    object("create","ts_dialog",iDialogDescr);
    ts_dialog(iDialogDescr, "init_dialog","palette",x,y,w,h);
    ts_dialog(iDialogDescr, "eventreaction", "Event_PanelCloseRequested");
    ts_dialog(iDialogDescr, "SetTitle","Расчет ведомости объемов работ");
    bool bres;
   // создать  элемент управления
   x=1; y=1; w=50; h=20;
   object("create","ts_dialogcontrol",iButtonZoom,"iButtonZoom");
    ts_dialogcontrol(iButtonZoom, "init_control", "button",iDialogDescr, x, y, w, h);
    ts_dialogcontrol(iButtonZoom, "eventreaction", "Event_ButtonClicked");
    ts_dialogcontrol(iButtonZoom, "settext", "Показать");
...
    ts_dialog(iDialogDescr, "invoke",bres);
    cout << bres;
}

int Event_ButtonClicked(int iDescr, string sDescr)
{
   if(sDescr == "ButtonCancel")
   {
      ts_dialog(iDialogDescr,"PostCloseRequest","cancel"); // закрыть диалог с результатом отмены
   }
   else if(sDescr == "ButtonOK")
   {
      ts_dialog(iDialogDescr,"PostCloseRequest","ok"); // закрыть диалог с результатом "Ok"
   }
   else if(sDescr == "ButtonCalc")
   {
          Calc();
   }
   else if(sDescr == "ButtonZoom")
   {
          ZoomElementInProject();
   }
}


Теперь по нажатию кнопки будет выполняться эта функция.

В момент ее выполнения iDescr - числовое значение дескриптора кнопки, которая вызвала событие, а sDescr - ее имя объекта (не путать с текстом кнопки). Можно различать какая кнопка нажата по конструкции


if(iDescr == iDescrZoom) 
{
   //
}
Либо 
if(sDescr == "iButtonZoom")
{
   //
}


Бывает удобно и по числу и по имени. Например можно задать одинаковые имена группе кнопок, выполнять общие действия, а затем различать их по числовому дескриптору.

Ниже дана таблица имен функций - обработчиков событий для каждого типа элементов управления диалогов.


Имя функции - обработчика события

Элементы, к которым можно применять

Примечание

Event_TreeViewContextMenuRequested

MultiselTreeView, SingleSelTreeView

Запрос вызова контекстного меню

Event_TreeViewItemCollapsed

Свертывание дерева

Event_TreeViewItemDoubleClicked

Двойной щелчок

Event_TreeViewItemExpanded

Раскрытие элемента

Event_TreeViewLabelEditFinished

Завершение редактирования текста элемента

Event_TreeViewLabelEditStarted

Начало редактирования текста элемента

Event_TreeViewSelectionChanged

Смена выбранного элемента дерева

Event_TreeViewStateIconClicked

Щелчок на иконке состояния




Event_ListViewContextMenuRequested

MultiselListView, SingleselListView

Запрос контекстного меню

Event_ListViewDoubleClicked

Двойной щелчок

Event_ListViewItemUpdate

Обновление позиции

Event_ListViewSelectionChanged

Изменение текущей позиции




Event_RealEditChanged

RealEdit

Изменение числа в поле редактирования




Event_TextEditChanged

TextEdit

Изменение текста в поле редактирования




Event_ItemFocusGained

Все фокусируемые элементы

Элемент получил фокус

Event_ItemFocusLost

Все фокусируемые элементы

Элемент потерял фокус




Event_ImageClicked

IconItem

Щелчок на картинке




Event_ListBoxClicked

MultiselListBox, SingleselListBox

Щелчок мыши

Event_ListBoxDoubleClicked

Двойной щелчок

Event_ListBoxSelectionChanged

Изменение текущего выбора




Event_PopUpChanged

PopUp

Изменение значения в элементе PopUp




Event_StaticTextClicked

LeftText, CenterText, RightText

Щелчок на тексте

Event_StaticTextDoubleClicked

Двойной щелчок




Event_CheckItemChanged

CheckBox, IconCheckBox, IconPushCheck, PushCheck

Смена выбранного элемента

Event_CheckItemDoubleClicked

Двойной щелчок




Event_ButtonClicked

Button, IconButton

Нажатие кнопки




Event_NormalTabChanged

NormalTab

Изменение текущего элемента в NormalTab (переход на другую панель)

Event_NormalTabClicked

NormalTab

Щелчек мыши на поле элемента NormalTab

Event_PushMenuChanged


PushMenuCheck

PushMenuRadio

Изменение состояния

Event_PushMenuDoubleClicked

Двойной щелчек мыши