Описание пользователя
Глава 3. Использование стандартных модулей автокомпиляции
§3.7. Краткий перечень вводимых в модель описаний и реакций на события
§3.7.11. Прочие реакции
§3.7.11.6. Вызов контекстного меню
Это событие возникает непосредственно перед появлением на экране контекстного меню блока. Как правило, реакция на него используется для добавления в это меню дополнительных пунктов, при выборе которых модель блока будет вызываться для выполнения каких-либо действий. Примеры моделей, добавляющих свои пункты в контекстное меню, приведены в §3.6.12.
Текст реакции на это событие вводится на вкладке «» левой панели редактора модели: раздел «», подраздел «». В классе блока для нее создается функция с именем rdsbcppContextPopup следующего вида:
// Actions before popup menu show void rdsbcppBlockClass::rdsbcppContextPopup(RDS_PCONTEXTPOPUPDATA MenuData) { … пользовательский текст реакции … }
Параметр функции MenuData – это указатель на структуру с именем RDS_CONTEXTPOPUPDATA:
typedef struct {
BOOL EditMode; // Включен режим редактирования
BOOL FreeSpace; // Щелчок на свободном месте окна
} RDS_CONTEXTPOPUPDATA;
typedef RDS_CONTEXTPOPUPDATA *RDS_PCONTEXTPOPUPDATA;
Поля структуры имеют следующий смысл:
- EditMode (BOOL)
- TRUE, если RDS в момент вызова меню находится в режиме редактирования, и FALSE, если RDS находится в режимах моделирования или расчета (пункты меню в режиме редактирования, как правило, отличаются).
- FreeSpace (BOOL)
- FALSE, если вызвано контекстное меню самого блока, и TRUE, если контекстное меню вызвано щелчком не на изображении блока, а на свободном месте окна подсистемы. Это поле может принимать значение TRUE только в том случае, если данный блок – подсистема, и ее окно в данный момент открыто. Поскольку автокомпилируемые модели подсистем практически не используются, необходимости в анализе значения этого поля обычно не возникает.
При написании моделей блоков без использования модуля автокомпиляции вызову контекстного меню блока соответствует константа RDS RDS_BFM_CONTEXTPOPUP.