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

Описания RDS

Приложения

Приложение А. Функции, константы и структуры RDS

А.3. События модуля автокомпиляции и связанные с ними структуры

А.3.4. События модуля автокомпиляции

А.3.4.8. RDS_COMPM_EXECFUNCTION – реакция на действия пользователя

# Приложения

## Приложение А. Функции, константы и структуры RDS

### А.3. События модуля автокомпиляции и связанные с ними структуры

#### А.3.4. События модуля автокомпиляции

##### А.3.4.8. RDS_COMPM_EXECFUNCTION – реакция на действия пользователя

Первый параметр функции модуля (int CallMode)

Константа RDS_COMPM_EXECFUNCTION.

Третий параметр функции модуля (void *ExtParam)

Указатель на структуру RDS_COMPEXECFUNCDATA, содержащую команду пользователя и дополнительные данные.

Возвращаемое функцией модуля значение

RDS_COMPR_DONE | Команда пользователя выполнена.
RDS_COMPR_ERROR | При выполнении команды возникли ошибки.

Примечания

Событие RDS_COMPM_EXECFUNCTION возникает при различных действиях пользователя на вкладке «Компиляция» окна параметров блока. На момент этого события модель может быть еще не подключена к блоку, и действия пользователя, вызвавшие это событие, могут быть направлены на подключение новой модели. Эта реакция вызывается при нажатии пользователем кнопок «Обзор», «Сохранить как» и т.п., в результате функция модуля может вернуть в RDS измененное имя модели вызовом rdscompReturnModelName.

В параметре ExtParam при реакции на событие RDS_COMPM_EXECFUNCTION передается указатель на структуру RDS_COMPEXECFUNCDATA:

      typedef struct {
        RDSINT32 Function;     // Действие (RDS_COMPFLAG_FUNC*)
        RDSCSTR ModelNameA;    // Содержимое строки имени модели (UTF8)
        RDSWCSTR ModelNameW;   // Содержимое строки имени модели (UTF16)
        //RDSXCSTR ModelName;  // Содержимое строки имени модели (поле-псевдоним)
        // Следующие параметры могут не иметь смысла для некоторых функций
        RDS_HOBJECT BlockVars; // Переменные блока
        RDSINT32 BlockType;    // Тип блока (RDS_BT* или RDS_TUNKNOWN)
      } RDS_COMPEXECFUNCDATA;
      typedef RDS_COMPEXECFUNCDATA *RDS_PCOMPEXECFUNCDATA;

Поля структуры

Function(RDSINT32)
  Одна из констант, описывающих действие, совершенное пользователем (они частично совпадают с флагами, возвращаемыми функцией модуля при реакции на событие RDS_COMPM_GETOPTIONS):

  RDS_COMPFLAG_FUNCMODELBROWSE | Пользователь нажал кнопку «Обзор…»
  RDS_COMPFLAG_FUNCMODELCREATE | Пользователь нажал кнопку «Новый…»
  RDS_COMPFLAG_FUNCMODELSAVEAS | Пользователь нажал кнопку «Сохранить как…»
  RDS_COMPFLAG_FUNCMODELUSERINPUT | Пользователь ввел текст имени модели вручную (вызывается в момент закрытия окна параметров блока кнопкой «OK».

ModelNameA(RDSCSTR),ModelNameW(RDSWCSTR),ModelName(RDSXCSTR)
  Указатель на строку с именем модели на вкладке «Компиляция» окна параметров блока. Это текст во внутренней памяти RDS, функция модуля не может изменять его значение. Если в результате реакции необходимо изменить этот текст (например, если пользователь выбрал новое имя модели кнопкой «Обзор»), необходимо вызвать сервисную функцию rdscompReturnModelName.
BlockVars(RDS_HOBJECT)
  Вспомогательный объект, содержащий структуру переменных текущего блока. Это поле может использоваться только в реакции на нажатие кнопки «Новый», то есть при Function==RDS_COMPFLAG_FUNCMODELCREATE).
BlockType(RDSINT32)
  Тип блока, в окне параметров которого производятся действия:

  RDS_BTSYSTEM | Подсистема.
  RDS_BTSIMPLEBLOCK | Простой блок.
  RDS_BTINPUTBLOCK | Внешний вход.
  RDS_BTOUTPUTBLOCK | Внешний выход.
  RDS_BTBUSPORT | Ввод шины.

Для всех действий, кроме ввода имени модели вручную (RDS_COMPFLAG_FUNCMODELUSERINPUT), функция модуля вызывается немедленно при нажатии пользователем соответствующей кнопки. При ручном редактировании строки имени модели этот факт запоминается, а затем функция модуля вызывается при закрытии окна параметров блока кнопкой «OK» – в этот момент модуль может проверить, есть ли модель с введенным вручную именем, и создать ее, если это необходимо.

Пример

Пример реакции на это событие приведен в §3.3 руководства программиста.

См. также

RDS_COMPM_GETOPTIONS, RDS_BLOCKDESCRIPTION, rdscompReturnModelName.