Определяет изменение Местоположения (координат) и/или Размеров данного Объекта при изменении Размеров Родительского Контейнера, который содержит рассматриваемый Объект. Чтение / Запись для режимов Разработки (Design-Time) и Выполнения (Run-Time).

Control.Anchor [= nValue]

Expand imageВозвращаемое значение

nValue

Определяет составное (по-битовое) Значение, характеризующее различные варианты изменения Местоположения и Размеров данного Контрола.

В следующей Таблице приводится Описание возможных значений для составных частей параметра nValue.

Позиция Значение
Бита (части)
Номер
Бита
(части)
Противоречит
Значениям
Краткое Описание

Top Left

0

 

 

Местоположение и Размеры контрола не изменяются относительно Левой и Верхней границ родительского Контейнера (По-умолчанию). (Верхний-Левый Якорь)

Top Absolute

+1

0

16, 512

Местоположение Контрола не изменяется относительно Верхней границы Родительского Контейнера. (Верхний Якорь)

Left Absolute

+2

1

32, 256

Местоположение Контрола не изменяется относительно Левой границы Родительского Контейнера. (Левый Якорь)

Bottom Absolute

+4

2

64, 512

Местоположение Контрола не изменяется относительно Нижней границы Родительского Контейнера. (Нижний Якорь)

Right Absolute

+8

3

128, 256

Местоположение Контрола не изменяется относительно Правой границы Родительского Контейнера. (Правый Якорь)

Top Relative

+16

4

1, 512

Местоположение контрола изменяется Пропорционально относительно Верхней Границы родительского Контейнера.

Left Relative

+32

5

2, 256

Местоположение контрола изменяется Пропорционально относительно Левой Границы родительского Контейнера.

Bottom Relative

+64

6

4, 512

Местоположение контрола изменяется Пропорционально относительно Нижней Границы родительского Контейнера.

Right Relative

+128

7

8, 256

Местоположение контрола изменяется Пропорционально относительно Правой Границы родительского Контейнера.

Horizontal Fixed Size

+256

8

2, 8, 32, 128

Горизонтальное Центрирование Контрола, Размеры Контрола не изменяются.

Vertical Fixed Size

+512

9

1, 4, 16, 64

Вертикальное Центрирование Контрола, Размеры Контрола не изменяются.

Далее приводятся Примеры, описывающие общие случаи использования значений рассматриваемого Свойства Anchor.

Тип Контрола Значение
nValue
Краткое Описание

TextBox / EditBox

10

Горизонтальное растяжение (сжатие) Объекта при изменении размеров Родительского Контейнера.

CommandButton

12

Для размещения двух Контролов типа <OK> и <Отмена>, в Нижнем-Правом углу Контейнера.

CommandButton

128 и 32

Центрирование двух Кнопок, Левой и Правой.

CommandButton

260

Центрирование Контрола, размещенного в нижней части Формы.

Expand imageКомментарии

Применяется В: CheckBox Control | ComboBox Control | CommandButton Control | CommandGroup Control | Container Object | Control Object (Visual FoxPro) | EditBox Control | Grid Control | Image Control (Visual FoxPro) | Label Control (Visual FoxPro) | Line Control | ListBox Control | OLE Bound Control | OLE Container Control | OptionButton Control | OptionGroup Control | PageFrame Control | Shape Control | Spinner Control | TextBox Control (Visual FoxPro)

Привязка (Anchoring) основывается на исходных Координатах рассматриваемого Контрола в тот момент, когда определяется требуемое значение для свойства Anchor; обычно это происходит при создании экземпляра данного Контрола, его инициализации. Привязка не учитывает текущую позицию Контрола (его текущее местоположение). Следовательно, даже после того как вы переместите рассматриваемый Контрол, механизм Привязки использует начальные Координаты Контрола. Данные размышления объясняют отличие между схожими значениями для свойства Anchor: = 0 или = 3 (+1+2).

Например, предположим, что на Форме расположена Кнопка типа CommandButton, для нее установлено значение свойства Anchor = 3. При размещении в программном Коде события Click следующего фрагмента: (Попытка Программного перемещения Кнопки в правую сторону)

  CopyCode imageКопировать Код
This.Left = This.Left + 10

Однако, когда вы изменяете размеры Формы, рассматриваемый Контрол (Кнопка) возвращается в свою начальную позицию.

NoteСовет

Если вам требуется выполнять Привязку Контрола на основе текущих Координат (после перемещения его, как указано в примере), рекомендуется сначала выполнить Anchor = 0, а после этого выполнить Anchor =  3. Если использовать предположения рассматриваемого Примера, то в программный Код события Click можно поместить следующий Фрагмент:

  CopyCode imageКопировать Код
Local Tmp1
Tmp1 = This.Anchor
This.Left = This.Left + 10
This.Anchor = 0
This.Anchor = Tmp1

Значения свойства Anchor рассматриваемых Контролов подчиняется Родительским Контейнерам:

Значения свойства Anchor игнорируется для Контролов, помещенных в Контейнеры типа ToolBar или Column.

Вы можете изменять Размеры Элементов Управления (Контролов), в этом случае должны быть установлены соответствующие значения для противоположных границ Контрола; например, Значения для Левого и Правого края, или для Верхнего и Нижнего края. Если определить только значение для одного края, то данный контрол можно только Переместить, а размеры Контрола не изменяются

Если вы не устанавливаете Биты одной из Координатных Осей (вертикальной или Горизонтальной), то при изменении размеров родительского Контейнера координаты соответствующей Оси Контрола - Не изменяются. Например, значения для Свойства Anchor =  1, 3, 5, 7, или 10 влияют только на верхний и нижний края Контрола, а по горизонтали изменений не происходит.

Примечание Переводчика: При разработке пользовательской Формы, для установки значения свойства Anchor можно использовать  соответствующий  Редактор: Anchor Editor, смотрите далее

Форма Редактора Привязки (Anchor Editor)

Вы не можете устанавливать значения Битов, которые противоречат друг - другу. Это относится к следующим Примерам:

  • Недопустима Абсолютная и Относительная Привязка к одной и той же границе,  nValue = 17 (+1+16).

  • Недопустима комбинация Фиксированного размера Контрола по одной из координатных Осей и привязка к краю по той же Оси nValue = 258 (+2+256), или 513 (+1+512)., противоречие - очевидно, смотрите Таблицу выше.

Expand imageСм. также