TMapEditMetric

 

Hierarchy        Properties        Methods        Events

Previous Top Next

 

Unit

 MapEdMet

 

Компонент TMapEditMetric предназначен для редактирования точек метрики объекта карты в интерактивном режиме. Редактирование включает в себя добавление новых, изменение или удаление существующих точек метрики объекта карты, на который настроен компонент TMapObj, указание на который обязательно должно содержаться в поле MapObj.

В компоненте TMapEditMetric должно быть обязательно указано, с каким компонентом TMapView он работает. Для активизации режима выбора точки необходимо вызвать метод StartAction.

 

Компонент имеет несколько режимов работы (свойство EditMode):

-создание нового объекта (EditMode = emCreate);
-создание подобъекта в существующем объекте (EditMode = emCreateSubj)  (работает только с объектами, тип локализации которых позволяет им иметь подобъекты, т.е. только с площадными, линейными и подписями);
-добавление точки в метрику существующего объекта (EditMode = emAddPoint)  (не работает с точечными и векторными объектами, так как они должны иметь строго определенное количество точек метрики);
-удаление точки из метрики существующего объекта (EditMode = emRemPoint)  (не работает с точечными и векторными объектами, так как они должны иметь строго определенное количество точек метрики);
-получение координаты точки на контуре объекта (emGetPoint);
-изменение координат метрики существующего объекта (или его подобъекта) (EditMode = emEdit);
-перемещение всего объекта (EditMode = emMove).

 

В зависимости от выбранного режима работы (свойство EditMode) и характера локализации создаваемого (редактируемого) объекта, редактирование метрики выполняется по-разному.

В режиме создания объектов (EditMode = emCreate)  для точечных объектов (MapObj.Local = OL_MARK) при нажатии левой кнопки мыши на карте, появляется схематичное изображение создаваемого объекта. Перемещением мыши по карте с нажатой левой клавишей мыши производиться выбор расположения точечного объекта. Так как точечный объект должен иметь только одну точку метрики, отжатие кнопки мыши является завершением процесса создания объекта.

В режиме создания объектов (EditMode = emCreate)  для векторных объектов (MapObj.Local = OL_VECTOR) и подписей (MapObj.Local = OL_TEXT) при нажатии левой кнопки мыши на карте, появляется схематичное изображение создаваемого объекта. При этом для подписей это может быть либо текст подписи (ShowTitleText = true), либо прямоугольная рамка габаритов подписи (ShowTitleText = true). Путем перемещения мыши по карте с нажатой левой клавишей мыши выбирается расположение первой точки метрики векторного объекта. Отжатие кнопки мыши добавляет первую точку. Далее перемещением мыши по карте выбирается место расположения второй точки. Для добавления второй точки необходимо нажать и отпустить левую кнопку мыши. Так как векторные объекты и подписи имеют две точки метрики, добавление второй точки является завершением процесса создания объекта. Для объектов типа подпись (MapObj.Local = OL_TEXT) текст подписи должен быть установлен до вызова метода StartAction.

В режиме создания объектов (EditMode = emCreate)  для площадных (MapObj.Local = OL_SQUARE), линейных (MapObj.Local = OL_LINE) объектов для добавления точек необходимо нажать и отпустить левую кнопку мыши. При этом создаваемый объект отображается контуром. Для завершения процесса добавления точек метрики необходимо произвести двойное нажатие пользователем левой кнопки мыши на карте, либо нажатием левой кнопки мыши с одновременно нажатой клавишей Ctrl на клавиатуре.

Режим перемещения объекта (EditMode = emMove)  может работать в двух вариантах в зависимости от состояния флажка MoveWhenDown. Если MoveWhenDown = false, то любое передвижение мыши будет вызывать перемещение объекта карты вне зависимости от состояния клавиш мыши. Завершение операции будет вызвано нажатием и отпусканием любой клавиши мыши. Если MoveWhenDown = true, то перемещение объекта карты будет происходить только, если при передвижении мыши будет нажата левая клавиша мыши. В этом случае, для завершения процесса перемещения необходимо произвести двойное нажатие пользователем левой кнопки мыши на карте, либо нажатием левой кнопки мыши с одновременно нажатой клавишей Ctrl на клавиатуре.

Успешным завершением процесса редактирования считается двойное нажатие пользователем левой кнопки мыши на карте, либо нажатием левой кнопки мыши с одновременно нажатой клавишей Ctrl на клавиатуре, а также при создании точечных и векторных объектов – добавление первой или второй точки соответственно.Для успешного завершения редактирования можно вызвать метод EditComplite.

Неуспешным завершением процесса редактирования считается его прерывание пользователем непосредственно вызовом метода StopAction, либо нажатием правой кнопки мыши с одновременно нажатой клавишей Ctrl на клавиатуре.

Режим EditMode = emGetPoint используется для получения координат точек на контуре объекта. В этом режиме при перемещении по контуру объекта вызывается событие OnMapGetPointEvent, в которое передается координата текущей точки.

При успешном завершении редактирования (создания) метрики объекта, новая метрика присваивается объекту, на который настроен компонент TMapObj, затем вызывается событие OnExecute, свидетельствующее об успешном завершении процесса редактирования метрики и компонент переводиться в неактивный режим (вызывается метод StopAction). В противном случае метрика в объект не передается и событие OnExecute не вызывается.