Текущий раздел:

Описания RDS

Описание пользователя

Глава 3. Использование стандартных модулей автокомпиляции

§3.7. Краткий перечень вводимых в модель описаний и реакций на события

§3.7.11. Прочие реакции

§3.7.11.6. Вызов контекстного меню

# Описание пользователя

## Глава 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.