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

Описания RDS

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

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

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

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

§3.7.2.4. Удаление блока пользователем

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

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

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

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

##### §3.7.2.4. Удаление блока пользователем

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

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

      // Actions before the block is deleted by the user
      void rdsbcppBlockClass::rdsbcppManualDelete(RDS_PMANUALDELETEDATA DeleteData)
      {
         … пользовательский текст реакции …
      }

В функцию передается параметр DeleteData, представляющий собой указатель на структуру описания события RDS_MANUALDELETEDATA:

      typedef struct {
        BOOL Single;   // Удаляется один блок
        BOOL WithSys;  // Удаляется блок внутри удаляемой подсистемы
      } RDS_MANUALDELETEDATA;
      typedef RDS_MANUALDELETEDATA *RDS_PMANUALDELETEDATA;

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

Single(BOOL)
  TRUE, если данный блок – единственный удаляемый, и FALSE, если удаляется группа выделенных блоков, в которую входит данный.
WithSys(BOOL)
  TRUE, если пользователь удаляет подсистему, внутри которой (на любом уровне вложенности) находится этот блок, и FALSE, если этот блок непосредственно входит в удаляемую группу выделенных блоков.

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