Приложения
Приложение А. Функции, константы и структуры RDS
А.5. Сервисные функции и макросы RDS
А.5.2. Управление работой RDS и функции общего назначения
А.5.2.15. rdsCancelPaste – отмена вставки блоков из буфера обмена
Функция rdsCancelPaste отменяет вставку одного или нескольких блоков из буфера обмена, если она вызвана из реакции на событие, возникшее в процессе этой вставки.
void RDSCALL rdsCancelPaste(void);
Тип указателя на эту функцию
RDS_VV
Примечания
При вставке блоков в схему из буфера обмена последовательно вызывается множество реакций моделей этих блоков. К блокам подключаются модели (событие RDS_BFM_INIT), проверяются статические переменные блоков (событие RDS_BFM_VARCHECK), загружаются сохраненные параметры блоков (события RDS_BFM_LOADBIN и RDS_BFM_LOADTXT). Если вставляемые блоки имеют автоматически компилируемые модели, также вызываются реакции связанных с ними модулей автокомпиляции: инициализация модуля, если он еще не подключен (RDS_COMPM_INIT), проверка возможности подключения блока к модели (RDS_COMPM_CANATTACHBLK), инициализация модели, если это ее первое использование в схеме (RDS_COMPM_MODELINIT), подключение модели к блоку (RDS_COMPM_ATTACHBLOCK) и т.д. Если хотя бы в одной из этих реакций будет вызвана функция rdsCancelPaste, вставка будет отменена, а все блоки и связи, которые успели вставиться до вызова функции, будут стерты с вызовом соответствующих реакций их моделей.
Чаще всего эта функция применяется для того, чтобы при вставке блоков, которые связаны с какими-либо глобальными объектами, предупредить об этом пользователя и дать ему возможность, при необходимости, отменить эту вставку. Например, стандартный модуль автоматической компиляции, входящий в состав RDS, при вставке из буфера обмена блоков с автокомпилируемыми моделями спрашивает пользователя, что сделать с моделями: создать их копии для вставляемых блоков, чтобы их можно было независимо изменять, или связать вставляемые блоки с теми же файлами моделей, которые использовались оригинальными, скопированными в буфер, блоками. Если пользователь нажмет в диалоге кнопку «», вся вставка блоков будет отменена.
Если функция rdsCancelPaste вызывается не в момент вставки блоков из буфера обмена, вызов будет проигнорирован.