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

Описания RDS

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

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

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

§3.7.2. Создание и уничтожение блока

§3.7.2.3. Добавление блока пользователем

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

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

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

#### §3.7.2. Создание и уничтожение блока

##### §3.7.2.3. Добавление блока пользователем

Это событие возникает после добавления блока в подсистему пользователем из библиотеки, из файла или из буфера обмена. При добавлении блока в схему не из-за действий пользователя (например, если блок добавлен по команде от другого блока, или при загрузке блока в составе вставляемой из буфера обмена подсистемы) событие не возникает. В реакции на это событие можно, например, спросить что-нибудь у пользователя и, в зависимости от его ответа, изменить параметры блока.

Реакция на событие добавления блока вводится на вкладке «события» левой панели редактора модели: раздел «создание и уничтожение», подраздел «добавление блока пользователем». Модуль автокомпиляции создает для этой реакции в классе блока функцию с именем rdsbcppManualInsert, внутрь которой вставляется текст программы, введенной пользователем. Функция имеет следующий вид:

      // Actions after user adds a new block
      void rdsbcppBlockClass::rdsbcppManualInsert(RDS_PMANUALINSERTDATA InsertData)
      {
         … пользовательский текст реакции …
      }

В функцию передается единственный параметр InsertData, представляющий собой указатель на структуру описания события RDS_MANUALINSERTDATA. В файлах заголовков RDS эта структура описана следующим образом:

      typedef struct {
        int Reason;   // Способ добавления (константа RDS_LS_*)
        BOOL Single;  // Добавлен только один блок
      } RDS_MANUALINSERTDATA;
      typedef RDS_MANUALINSERTDATA *RDS_PMANUALINSERTDATA;

Поля структуры имеют следующий смысл:

Reason(int)
  Одна из двух стандартных констант, указывающих на способ добавления блока в схему: RDS_LS_LOADCLIPBRD, если блок вставлен из буфера обмена, и RDS_LS_LOADFROMFILE, если он добавлен из библиотеки или загружен из файла.
Single(BOOL)
  TRUE, если в схему вставлен только один блок, и FALSE, если вставлено сразу несколько блоков (например, группа блоков из буфера обмена).

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