Описание пользователя
Глава 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.