Eventreaction
Привязать к элементу управления функцию - обработчик события или задать имя конечной функции для обработки события.
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 |
Двойной щелчек мыши |
|
|
|
|
|
|
|