Инструменты пользователя

Инструменты сайта


Боковая панель

developers:tutorial:selectionset

Это старая версия документа.


Выделение элементов

За выделение объектов на видовом экране отвечает класс, наследник от абстрактного класса SelectionSet. Он за возвращение списка всех выделяемых элементов, выделение элементов и их хранение, а также за копирование элементов через буфер обмена и их перемещение, если это необходимо. Каждый слой видового экрана при реализации возвращает свой экземпляр SelectionSet.

Если слой не поддерживает выделение элементов, то в качестве SelectionSet можно вернуть экземпляр DefaultSelectionSet. Это реализация по умолчанию, не позволяющая выделить элементы.

Для реализации наследника от SelectionSet необходимо реализовать следующие функции и методы:

  • Select - предназначен для выделения или снятия выделения с объекта.
  • Clear - снимает выделение со всех выделенных объектов
  • Erase - удаляет все выделенные объекты.
  • GetObjectsAtPoint - выбор объектов в указанной точке и расстояние до них.
  • GetObjectsByFrame - выбор объектов рамкой
  • GetObjectsByPolygon - выбор объектов полигоном. В данный момент метод не поддерживается.
  • GetEnumerator - перечисление выделенных объектов.
  • GetSelectable - перечисление всех объектов которые можно выделить.
  • Count - количество выделенных элементов
  • IsEnable - проверяет включен ли объект на этом SelectionSet.
  • IsOwned - проверяет принадлежит ли объект выделяемым объектам этого SelectionSet.
  • IsSelected - проверяет выделен ли объект на этом SelectionSet.
В функцию GetObjectsAtPoint в качестве параметра приходит временной интервал, в течении которого вы должны завершить выполнение функции. Если интервал равен 0 то время на выполнение функции не ограничено.

Свойства объектов, которые будут выделены с помощью SelectionSet будут отображены на видовом экране. А в качестве типа объекта будет выведено значение функции ToString().

Для того чтобы управлять названием и положением свойства в инспекторе объектов можно использовать атрибуты [DisplayName] и [Category]. Для скрытия свойства доступен атрибут [Browsable]

Более подробно работа со свойствами описана в разделе Таблицы и диалоги.

Для реализации методов для выбора объектов, таких как GetObjectsAtPoint и сложной геометрии объектов можно использовать специальный класс - NullDeviceContext. Он позволяет определить принадлежит ли заданная точка объекту или рамке, нарисовав сам объект в памяти.

При реализации метода GetObjectsByFrame необходимо учитывать тип рамки, и в зависимости от этого пользоваться либо NullDeviceContext либо FullDeviceContext.
developers/tutorial/selectionset.1552232748.txt.gz · Последние изменения: 2021/07/22 14:28 (внешнее изменение)