Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MB_REF_7.pdf
Скачиваний:
25
Добавлен:
13.02.2015
Размер:
2.96 Mб
Скачать

Оператор Alter Menu Item

Оператор Alter Menu Item

Назначение:

Изменяет состояние элемента списка меню.

Синтаксис:

Alter Menu Item { handler | ID menu_item_id }

{ [

Check | Uncheck ]

|

[

Enable | Disable ]

|

[

Text itemname ]

|

[

Calling handler | As

menuname ] }

где

handler – имя sub-процедуры или код для стандартной команды MapInfo;

menu_item_id – целочисленный идентификатор элемента меню, который задается при создании списка меню (оператором Create Menu или Alter Menu);

menuname – заголовок списка меню;

itemname – новый текст для элемента меню (может содержать управляющие коды).

Описание:

Оператор Alter Menu Item изменяет значения атрибутов одного или более элементов списка меню. Например, оператор может сделать команду недоступной для выбора (на экране она закрашивается серым).

Элемент меню может задаваться либо именем обработчика handler, который запускается при выборе элемента в списке меню, либо идентификатором в предложении ID. Заметим, что один и тот же обработчик могут вызывать разные элементы меню. Поэтому, если оператор Alter Menu Item использует имя процедуры-обработчика handler, то MapInfo будет менять все элементы, вызывающие этот обработчик, из всех меню. Если Вы используете предложение ID, то MapInfo изменит атрибуты только одного элемента меню.

Оператор Alter Menu Item может использовать идентификатор только для тех элементов, для которых при создании списка меню он был определен. Приложение MapBasic не может использовать идентификатор, который был задан другим приложением MapBasic.

Оператор Alter Menu Item позволяет вносить изменения в систему меню MapInfo. Если меню, подвергаемое изменению, уже находится в строке заголовков, то Вы можете увидеть изменения немедленно, открыв соответствующее меню.

Если задан режим Check, то при выборе элемента меню в списке меню напротив его имени устанавливается галочка. Это возможно, если при создании этого элемента оператором Create Menu он был назначен как избираемый ("checkable"). Режим Uncheck убирает галочку.

Режимы Disable и Enable определяют доступность выбора элемента меню. Недоступные элементы закрашиваются серым цветом. Заметим, что MapInfo автоматически делает некоторые элементы меню доступными и недоступными в соответствии с текущим состоянием в среде программы MapInfo. Например, команда ФАЙЛ > ЗАКРЫТЬ становится серой, если не открыто ни одной таблицы. Поэтому, приложение MapBasic не может изменять доступность стандартного элемента MapInfo.

Вы можете обращаться к инструментальным средствам как к элементам меню (например, M_TOOLS_RULER в MENU.DEF), но не можете сделать их недоступными с помощью оператора

Справочник MapBasic

31

Оператор Alter Menu Item

Alter Menu Item.

В предложении Text можно изменить имя элемента.

Предложение Calling задает имя процедуры-обработчика, вызываемой элементом меню. Если пользователь выберет этот элемент в меню, то MapInfo запустит на выполнение эту процедуру.

Пример 1:

Cоздается меню ДАННЫЕ, содержащее четыре команды, и затем добавляется в строку заголовков меню MapInfo.

Declare Sub addsub

Declare Sub editsub

Declare Sub delsub

Create Menu "Данные" As

"Добавить" Calling addsub, "Правка" Calling editsub, "Удалить" ID 100 Calling delsub, "Удалить все" ID 101 Calling delsub

'Удаляется меню Справка...

Alter Menu Bar Remove ID 7

'Добавляется меню Данные, а затем восстанавливается меню Справка Alter Menu Bar Add "Данные", ID 7

Пример 2:

Следующий оператор Alter Menu Item переименовывает команду ПРАВКА в команду ПРАВКА...

Alter Menu Item editsub Text "Правка..."

Пример 3:

Следующий оператор делает команду УДАЛИТЬ ВСЕ недоступной.

Alter Menu Item ID 101 Disable

Пример 4:

Следующий оператор делает недоступными две команды: УДАЛИТЬ ВСЕ и УДАЛИТЬ, так как они используют один и тот же обработчик.

Alter Menu Item delsub Disable

Смотрите также:

Alter Menu, Alter Menu Bar, Create Menu

32

Справочник MapBasic

Оператор Alter Object

Оператор Alter Object

Назначение:

Изменяет форму, положение или графический тип существующего объекта.

Синтаксис:

 

 

Alter Object obj

 

 

{ Info object_info_code , new_info_value

|

 

Geography object_geo_code , new_geo_value

|

Node { Add [ Position polygon_num , node_num ] ( x, y ) |

Set Position polygon_num , node_num ( x, y ) | Remove Position polygon_num , node _num

}

}

где

obj – переменная типа Object;

object_info_code – целое число, код, возвращаемый функцией ObjectInfo(_) (например, OBJ_INFO_PEN);

new_info_value – новое значение для кода object_info_code (например, новая величина типа Pen); object_geo_code – целое число, код, возвращаемый функцией ObjectGeography(_);

(например, OBJ_GEO_POINTX);

new_geo_value – новое значение для кода object_geo_code (например, новая X-координата); polygon_num – короткое целое число, идентификатор для одного полигона в объекте регион (область);

node_num – короткое целое число, идентификатор для одного узла в полилинии или полигоне; x, y – X- и Y-координаты узла.

Описание:

Оператор Alter Object изменяет форму, местоположение, графический стиль существующего объекта. Эффект действия оператора Alter Object зависит от того, какое предложение используется в конструкции оператора: Info, Node, или Geography.

Если оператор использует предложение Info, то MapBasic изменяет графический стиль оформления объекта (например, стиль линии и штриха). Если оператор использует предложение Node, то MapBasic добавляет, удаляет или передвигает узлы объекта типа "полилиния" или "область". Если оператор включает в себя предложение Geography, то MapBasic изменяет географические атрибуты всех объектов, не являющихся полилиниями и областями (например, X- или Y-координата точечного объекта).

Предложение Info

Оператор Alter Object с предложением Info изменяет стиль оформления объекта (например, стиль линии и штриха). В предложении изменяются атрибуты, значения которых можно получить от функции ObjectInfo(_). Например, Вы можете определить текущий стиль штриха (величину типа Brush), вызвав функцию ObjectInfo(_):

Dim b_fillstyle As Brush

b_fillstyle = ObjectInfo(Selection.obj, OBJ_INFO_BRUSH)

И, наоборот, следующий оператор Alter Object восстанавливает прежнее значение стиля штриховки:

Справочник MapBasic

33

Оператор Alter Object

Alter Object obj_variable_name

Info OBJ_INFO_BRUSH, b_fillstyle

Заметьте, что Вы используете один и тот же код (OBJ_INFO_BRUSH) в функции ObjectInfo(_) и в операторе Alter Object.

В следующей таблице в первой колонке приводятся имена кодов для использования в предложении Info в качестве параметра obj_info_code. Имена присвоены целочисленным кодам для удобства использования их в операторе. Эти определения находятся в файле MAPBASIC.DEF и, если Вы хотите использовать имена, включите в начало Вашей программы оператор Include "MAPBA SIC.DEF".

Значения obj_info_code

OBJ_INFO_PEN

OBJ_INFO_BRUSH

OBJ_INFO_TEXTFONT

OBJ_INFO_SYMBOL

OBJ_INFO_SMOOTH

OBJ_INFO_FRAMEWIN

OBJ_INFO_FRAMETITLE

OBJ_INFO_TEXTSTRING

OBJ_INFO_TEXTSPACING

OBJ_INFO_TEXTJUSTIFY

Результат выполнения Alter Object

Изменяется стиль линии или контура. Параметр new_info_value должен иметь значение типа Pen.

Изменяется стиль штриховки объекта. Параметр new_info_value должен иметь значение типа Brush.

Изменяется стиль шрифта. Параметр new_info_value должен иметь значение типа Font.

Изменяется стиль символа. Параметр new_info_value должен иметь значение типа Symbol.

Изменяется режим сглаживания углов для полилиний.

Параметр new_info_value должен иметь значение логического типа (TRUE или FALSE).

Меняет содержимое рамки на изображение другого окна.

Параметр new_info_value должен быть целочисленным идентификатором окна.

Заменяет заголовок в рамке. Параметр new_info_value должен иметь значение типа String.

Меняет текст в текстовом объекте. Параметр new_info_value должен иметь значение типа String.

Изменяет расстояние между строками в текстовом

объекте. Параметр new_info_value должен иметь значение типа Float равным 1, 1.5, или 2.

Изменяет значение выравнивания для текстовых

объектов. Параметр new_info_value должен иметь одно из следующих целочисленных значений:

0 – выравнивание влево,

1 – центрирование,

2 – выравнивание вправо.

34

Справочник MapBasic

 

 

Оператор Alter Object

 

 

 

 

 

 

OBJ_INFO_TEXTARROW

Изменяет вид указки для текстового объекта. Параметр

 

 

new_info_value должен иметь одно из следующих

 

 

целочисленных значений:

 

 

0

– нет указки,

 

 

1

– только линия,

 

 

2

– линия со стрелкой.

 

 

 

 

 

Предложение Geography

Оператор Alter Object с предложением Geography изменяет расположение объекта. Предложение Geography действительно для всех типов объектов за исключением полилиний и областей. Для изменения расположения объектов последних двух типов используйте предложение Node, которое описано ниже. В предложении Geography изменяются атрибуты, текущие значения которых можно получить от функции ObjectGeography(_). Например, Вы можете получить координаты конца объекта "линия":

Dim o_cable As Object

Dim x, y As Float

x = ObjectGeography(o_cable, OBJ_GEO_LINEENDX)

y = ObjectGeography(o_cable, OBJ_GEO_LINEENDY)

Оператор Alter Object изменяет координаты концов линейного объекта:

Alter Object o_cable

Geography OBJ_GEO_LINEENDX, x

Alter Object o_cable

Geography OBJ_GEO_LINEENDY, y

Заметим, что используется один и тот же код (OBJ_GEO_LINEENDX) в функции ObjectGeogra phy(_) и в операторе Alter Object.

В следующей таблице в первой колонке приводятся имена кодов для использования в предложении Geography в качестве параметра obj_geo_code. Имена присвоены целочисленным кодам для удобства использования их в операторе. Эти определения находятся в файле MAPBASIC.DEF и, если Вы хотите использовать имена, включите в начало Вашей программы оператор Include "MAP BASIC.DEF".

Значения obj_geo_code

OBJ_GEO_MINX

OBJ_GEO_MINY

OBJ_GEO_MAXX

OBJ_GEO_MAXY OBJ_GEO_ARCBEGANGLE OBJ_GEO_ARCENDANGLE OBJ_GEO_LINEBEGX OBJ_GEO_LINEBEGY

Результат выполнения Alter Object

Изменяет X-координату верхнего левого угла минимального прямоугольного покрытия (МПП).

Изменяет Y-координату верхнего левого угла МПП.

Изменяет X-координату нижнего правого угла МПП.

Изменяет Y-координату нижнего правого угла МПП.

Изменяет начальный угол дуги.

Изменяет конечный угол дуги.

Изменяет X-координату начальной точки линии.

Изменяет Y-координату начальной точки линии.

Справочник MapBasic

35

Оператор Alter Object

OBJ_GEO_LINEENDX

Изменяет X-координату конечной точки линии.

OBJ_GEO_LINEENDY

Изменяет Y-координату конечной точки линии.

OBJ_GEO_POINTX

Изменяет X-координату точечного объекта.

OBJ_GEO_POINTY

Изменяет Y-координату точечного объекта.

OBJ_GEO_ROUNDRADIUS

Изменяет радиус закругления для объекта типа

 

"скругленный прямоугольник".

OBJ_GEO_TEXTLINEX

Изменяет координату по оси X конца текстовой строки

 

объекта.

OBJ_GEO_TEXTLINEY

Изменяет координату по оси Y конца текстовой строки

 

объекта.

 

 

OBJ_GEO_TEXTANGLE

Изменяет угол поворота текстового объекта

 

 

Предложение Node

Оператор Alter Object с предложением Node добавляет, перемещает или убирает узлы полилиний и многоугольников (полигонов), составляющих области.

Add используется для создания в объекте нового узла. Remove Position удаляет заданный узел. Set Position меняет местоположение узла.

Обычно оператор Alter Object с предложением Node используется в связке с операторами Create Pline или Create Region (создание полилинии и полигона). Операторы Create позволяют создать объекты полилинии или полигона из образца. Операторы Create требуют точного задания количества узлов объекта на этапе компиляции; но в ряде случаев Вы не можете знать, сколько узлов будет содержать объект при работе программы.

Если Ваша программа не знает точное количество узлов, Вы можете, используя операторы Create Region или Create PLine, создать "пустые" объекты (т. е. количество узлов объекта будет нулевым). Когда понадобится, Вы с помощью оператора Alter Object... Node Add можете добавить к созданному объекту любое количество узлов.

Параметры polygon_num и node_num могут принимать значения от 1 и более. Параметр polygon_num определяет номер изменяемого многоугольника в области. Параметр node_num – номер узла в многоугольнике и в ломаной (полилинии). Если объект является полилинией, то параметр polygon_num должен быть всегда единицей.

Пример:

Dim myobj As Object, i As Integer

Create Region Into Variable myobj 0

For i = 1 to 10

Alter Object myobj

Node Add (Rnd(1) * 100, Rnd(1) * 100)

Next

Объекты Группа точек и Коллекция

Оператор Alter Object расширен поддержкой следующих новых типов объектов.

Группа точек: устанавливает символ группы точек , как показано ниже:

36

Справочник MapBasic

Оператор Alter Object

Alter Object obj_variable_mpoint

Info OBJ_INFO_SYMBOL, NewSymbol

Коллекция: Используя оператор Alter Object с предложением Info, можно переустановить части коллекции (регион, полилиния или группа точек) внутри объекта "коллекция". Предложение Info позволяет видоизменять те же атрибуты, которые Вы можете запрашивать через функцию ObjectInfo( ). Например, можно определить часть регионов объекта коллекция вызывом функции ObjectInfo( ):

Dim ObjRegion As Object

ObjRegion = ObjectInfo(Selection.obj, OBJ_INFO_REGION)

Таким образом, следующий оператор Alter Object позволяет переустановить часть регионов,

входящих в коллекцию:

Alter Object obj_variable_name

Info OBJ_INFO_REGION, ObjRegion

Внимание: Вы используете тот же самый код ( OBJ_INFO_REGION) и в функции

ObjectInfo( ) и в операторе Alter Object.

К оператору Alter Object добавлена поддержка, позволяющая вставлять и удалять узлы из объектов типа "группа точек".

Alter Object obj Node .

Чтобы вставить узлы в группу точек:

Dim mpoint_obj as object

Create Multipoint Into Variable mpoint_obj 0

Alter Object mpoint_obj Node Add (0,1)

Alter Object mpoint_obj Node Add (2,1)

Внимание: Узлы для группы точек всегда добавляются в конец таблицы. Чтобы удалить узлы из группы точек:

Alter Object mpoint_obj Node Remove Position polygon_num, node_num

mpoint_obj объект типа "группа точек".

polygon_num 0 игнорируется для группы точек, рекомендуется установить значение 1.

node_num 0 число удаляемых узлов.

Чтобы установить точки внутри группы точек:

Alter Object mpoint_obj Node Set Position polygon_num, node_num (x,y)

mpoint_obj объект типа "группа точек".

polygon_num 0 игнорируется для группы точек, рекомендуется установить значение 1.

node_num 0 число узлов, которые будут изменены.

(x,y) 0 новые координаты узла node_num.

В новой версии также можно определять замкнутые области, не являющиеся полигонами 0 для этой цели используется оператор Objects Check.

Objects Check From tablename

[SelfInt [Symbol Clause] ]

[Overlap [Pen Clause] [Brush Clause] ]

[Gap Area [Unit Units] [Pen Clause] [Brush Clause] ] ]

Справочник MapBasic

37

Оператор Alter Object

Пустоты (бреши) 0 это замкнутые области, которые не образуют полигонов. В таблице с границами, полигоны должны иметь общие границы. В идеальном случае в таблице не должны встречаться перекрытия полигонов и пустоты между ними. В некоторых случаях пустоты между полигонами имеют смысл и право на существование. Например, Великие озера на карте мира являются "пустотой" между Канадой и США. Однако, в большинстве случаев пустоты являются результатом плохого согласования общих границ между полигонами. Такие бреши обычно имеют малые размеры.

Чтобы успешно отделить допустимые пустоты (например, Великие озера) от заведомо ненужных брешей, используется предложение Area. Любые пустоты больше заданной площади будут оставляться без изменения. Единицы измерения площади Area задаются предложением Units. Если подпредложение Units не задано, то площадь брешей Area будет измеряться в текущих единицах измерения MapBasic.

Пустоты выделяются и превращаются в полигоны, линии границ и заливка которых определяются предложениями Pen и Brush, следующими за ключевым словом Gap. По умолчанию, эти полигоны изображаются с синей заливкой и тонкой черной границей.

Пример

Этот пример запускает оператор Objects Check для таблицы "TestFile" и сохраняет результат в таблице "DumpFile". Также применяется параметр Overlap и изменяются стандартные стили точечных и площадных объектов.

objects check from TestFile into table Dumpfile Overlap SelfInt Symbol (67, 16711680, 28)

Overlap Pen (1,2,0) Brush (2, 16776960,0)

Gap 100000 Units "sq mi" Pen (1,2,0) Brush (2,255,0)

Смотрите также:

Create PLine, Create Region, ObjectGeography(_), ObjectInfo(_)

38

Справочник MapBasic

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]