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

Описания RDS

Приложения

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

А.2. События блока и связанные с ними описания

А.2.7. События, связанные с изменением схемы пользователем

А.2.7.6. RDS_BFM_RESIZE – размер блока изменен пользователем

# Приложения

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

### А.2. События блока и связанные с ними описания

#### А.2.7. События, связанные с изменением схемы пользователем

##### А.2.7.6. RDS_BFM_RESIZE – размер блока изменен пользователем

Поток, в котором вызывается функция модели

Главный поток RDS или поток расчета (только если размер изменен сервисной функцией, вызванной в потоке расчета).

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

Константа RDS_BFM_RESIZE.

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

Указатель на структуру описания события RDS_RESIZEDATA.

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

RDS_BFR_DONE | Изменение размеров блока подтверждено моделью (размеры могут быть скорректированы).
RDS_BFR_STOP | Изменение размеров блока отменено моделью.

Примечания

Событие RDS_BFM_RESIZE возникает у блока, внешний вид которого рисуется программно, сразу после изменения его размеров пользователем. На момент вызова реакции на это событие размер блока еще не изменен, он изменится только после нее. Чаще всего в этой реакции подстраиваются размеры каких-либо внутренних элементов изображения блока (см. §2.10.2 руководства программиста) или корректируются изменения размера, сделанные пользователем, если по каким-либо причинам они не подходят для блока.

В параметре ExtParam передается указатель на структуру RDS_RESIZEDATA, описывающую изменение размеров:

      typedef struct {
        BOOL HorzResize;             // Изменение горизонтального размера
        BOOL VertResize;             // Изменение вертикального размера
        RDSINT32 newWidth,newHeight; // Новые значения ширины и высоты
        RDSINT32 GridDx,GridDy;      // Шаги сетки редактора
        BOOL SnapToGrid;             // Привязка к сетке
      } RDS_RESIZEDATA;
      typedef RDS_RESIZEDATA *RDS_PRESIZEDATA;

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

HorzResize(BOOL)
  Изменена ширина блока.
VertResize(BOOL)
  Изменена высота блока. Вместе с полем HorzResize это поле определяет, каким именно образом пользователь изменил размер блока:

  HorzResize | VertResize | Действия пользователя
  --- | --- | ---
  FALSE | FALSE | Новые размеры блока заданы числами в окне параметров блока (кнопка «размер для функции DLL»).
  FALSE | TRUE | Пользователь перетащил верхнюю или нижнюю метку масштабирования вверх или вниз (изменена только высота).
  TRUE | FALSE | Пользователь перетащил левую или правую метку масштабирования влево или вправо (изменена только ширина).
  TRUE | TRUE | Пользователь перетащил одну из угловых меток масштабирования (изменены и ширина, и высота).

newWidth, newHeight(RDSINT32)
  Новые значения ширины (newWidth) и высоты (newHeight) блока в масштабе 100%. Модель может вмешаться в изменение размеров, заменив значения в этих полях. Например, можно записать вместо newHeight старое значение высоты блока, тогда изменение высоты, сделанное пользователем, будет проигнорировано. Текущие (старые) размеры блока могут быть получены при помощи сервисных функций rdsGetBlockDimensions и rdsGetBlockDimensionsEx.
GridDx, GridDy(RDSINT32)
  Горизонтальный (GridDx) и вертикальный (GridDy) шаги сетки в окне подсистемы.
SnapToGrid(BOOL)
  TRUE, если в окне подсистемы включена привязка к сетке.

См. также

RDS_BFM_RESIZING, rdsGetBlockDimensions, rdsGetBlockDimensionsEx, rdsSetBlockRect.