Навигация:
<< >> Оглавление Указатель

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

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

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

§3.7.9. Внешний вид блока

§3.7.9.3. Блок перемещен

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

Текст реакции на событие перемещения блока вводится на вкладке «события» левой панели редактора модели: раздел «внешний вид блока», подраздел «блок перемещен». В классе блока для нее создается функция с именем rdsbcppBlockMoved следующего вида:

  // Block has been moved
  void rdsbcppBlockClass::rdsbcppBlockMoved( MoveData)
  {
     … пользовательский текст реакции … 
  }

Параметр функции MoveData – это указатель на структуру описания события :

  typedef struct {
    int MoveReason;  // Причина перемещения
    int OldX,OldY;   // Старые координаты точки привязки
    int NewX,NewY;   // Новые координаты точки привязки
  } ;
  typedef  *;

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

MoveReason (int)
Одна из стандартных констант, указывающих на причину перемещения, то есть изменения координат, блока:
RDS_MR_SET Координаты блока установлены непосредственно, то есть введены пользователем с клавиатуры в окне параметров или установлены одной из сервисных функций.
RDS_MR_DRAG Пользователь «перетащил» блок мышью.
RDS_MR_KEYBOARD Пользователь переместил выделенный блок нажатиями курсорных клавиш.
RDS_MR_UNDOREDO Положение блока изменилось из-за отмены пользователем сделанного перемещения или из-за повтора ранее отмененного перемещения.
OldXOldY (int)
Горизонтальная и вертикальная координаты точки привязки блока до перемещения, значения даны для масштаба подсистемы 100% (для блоков с векторной картинкой точка привязки – это положение начала координат этой картинки, для всех остальных – левый верхний угол прямоугольной области, занимаемой блоком).
NewXNewY (int)
Координаты точки привязки блока после перемещения в масштабе 100%.

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


<< >> Оглавление Указатель