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

Оператор Note

Оператор Note

Назначение:

Показывает сообщение в простом диалоговом окне.

Синтаксис:

Note message

где

message – выражение, результат которого будет показан в окне.

Описание:

Оператор Note создает простое диалоговое окно сообщений, сопровождающееся одной кнопкой "ОК".

Параметр message может быть выражением, не обязательно строковым. Если в результате вычисления выражения message получается величина объектного типа (Object), MapBasic автоматически преобразует его в строку (так как это делает функция Str$( )). Это строковое представление и будет выведено в диалоговом окне сообщений. Если message – строка, то максимальная длина должна быть не более 300 символов и может занимать только 6 строк.

Пример:

Note "Всего использовано записей: " + Str$( i_count )

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

Ask( ), Dialog, Print

352

Справочник MapBasic

Функция NumAllWindows( )

Функция NumAllWindows( )

Назначение:

Возвращает количество окон, открытых MapInfo, включая специальные окна, такие как инструментальные панели и окно Информации.

Синтаксис:

NumAllWindows( )

Величина, полученная в результате:

Короткое целое число. Величина типа SmallInt.

Описание:

Функция NumAllWindows( ) определяет, сколько всего открыто окон программой MapInfo.

Чтобы определить количество открытых “документальных” окон MapInfo (Карт, Списков, Графиков и Отчетов), используйте функцию NumWindows( ).

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

NumWindows( ), WindowID( )

Справочник MapBasic

353

Функция NumberToDate( )

Функция NumberToDate( )

Назначение:

Возвращает величину типа Date, созданную из величины типа Integer.

Синтаксис:

NumberToDate(numeric_date )

где numeric_date – восьмизначное целое число типа Integer в форме ГГГГММДД (например, 19951231).

Величина, полученная в результате:

Величина типа Date.

Описание:

Функция NumberToDate( ) возвращает дату, величину типа Date, используя восьмизначное целое число. Например, следующая функция будет иметь результат, равный 31 декабря 1995:

NumberToDate(19951231)

Пример:

Dim i_elapsed As Integer

i_elapsed = CurDate() NumberToDate(19950101)

i_elapsed теперь равен числу дней, прошедших

с 1 января 1995

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

StringToDate( )

354

Справочник MapBasic

Функция NumCols( )

Функция NumCols( )

Назначение:

Возвращает число колонок таблицы.

Синтаксис:

NumCols(table)

где

table – имя открытой таблицы.

Величина, полученная в результате:

Короткое целое число. Величина типа SmallInt.

Описание:

Функция NumCols( ) возвращает число колонок, из которых состоит открытая таблица table.

В это число не входит специальная колонка "Object" (или "Obj" сокращенно), содержащая ссылки на графические объекты, присоединенные к таблице. Также в число колонок не включается другая специальная колонка RowID, содержащая номера строк таблицы.

Замечание: если таблица временная (например, полученная после оператора Add Column), то число колонок, полученное от функции NumCols( ) будет включать временную или временные колонки.

Ошибки:

В результате выполнения функции может генерироваться код ошибки: ERR_TABLE_NOT_FOUND, если таблица недоступна.

Пример:

Dim i_counter As Integer

Open Table "world"

i_counter = NumCols(world)

' i_counter содержит теперь число колонок WORLD

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

ColumnInfo( ), NumTables( ), TableInfo( )

Справочник MapBasic

355

Функция NumTables( )

Функция NumTables( )

Назначение:

Возвращает число открытых на данный момент таблиц.

Синтаксис:

NumTables( )

Величина, полученная в результате:

Короткое целое число. Величина типа SmallInt.

Описание:

Функция NumTables( ) возвращает число открытых на данный момент таблиц.

Если в MapInfo открыта таблица, содержащая Карту улиц (StreetInfo), то на самом деле открыты две связанные таблицы. Например, когда Вы открываете таблицу DCWASHS (карта улиц Вашингтона), MapInfo открывает две составляющие таблицы DCWASHS1.TAB и DCWASHS2.TAB. Тем не менее MapInfo считает DCWASHS одной таблицей, поскольку составляющие таблицы являются частями одной Карты. Так же и функция NumTables( ) таблицу, содержащую Карту улиц, будет считать одной открытой таблицей, несмотря на то, что практически она состоит из двух.

Пример:

If Numtables( ) < 1 Then

Note "Нет открытых таблиц. Продолжение невозможно."

End Program

End If

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

Open Table, TableInfo( ), ColumnInfo( )

356

Справочник MapBasic

Функция NumWindows( )

Функция NumWindows( )

Назначение:

Возвращает количество открытых на данный момент окон (Карт, Списков, Графиков и Отчетов).

Синтаксис:

NumWindows( )

Величина, полученная в результате:

Короткое целое число. Величина типа SmallInt.

Описание:

Функция NumWindows( ) возвращает число открытых на данный момент окон Карт, Списков, Графиков и Отчетов. Результат функции не зависит от того, в каком состоянии находится окно: свернуто в иконку или нет.

Чтобы определить общее количество выведенных на экран окон, включая вспомогательные (такие как окно Легенды, Информации), используется функция NumAllWindows( ).

Пример:

Dim num_open_wins As SmallInt

num_open_wins = NumWindows( )

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

NumAllWindows( ), WindowID( )

Справочник MapBasic

357

Функция ObjectGeography( )

Функция ObjectGeography( )

Назначение:

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

Синтаксис:

ObjectGeography(object, attribute)

где

object – объектное выражение;

attribute – целочисленный код, определяющий результат функции.

Величина, полученная в результате:

Вещественное число. Величина типа Float.

Описание:

Функция ObjectGeography( ) возвращает информацию об определенных координатах и угловых величинах географических объектов. Координатами могут быть координаты точечного объекта или начальной точки прямой линии, минимальные или максимальные координаты объектов. А угловыми величинами – начальный и конечный углы дуги, угол поворота текста.

Параметр attribute должен принимать значения целочисленного кода, управляющего типом возвращаемой функцией информации. В следующей таблице в первой колонке приводятся имена кодов для функции ObjectGeography( ), которые установлены в файле стандартных определений MapBasic MAPBASIC.DEF.

Заметим, что некоторые значения для параметра attribute могут адресоваться объектам определенного типа. Например, начальный угол может быть считан только у объекта типа "дуга".

358

Справочник MapBasic

Функция ObjectGeography( )

Значения attribute

Результат функции (Величина типа Float)

 

 

OBJ_GEO_MINX

Минимальная X-координата минимального

 

прямоугольного покрытия объекта, если его тип не

 

“линия”. Иначе возвратится значение, равное

 

OBJ_GEO_LINEBEGX.

OBJ_GEO_MINY

Минимальная Y-координата минимального

 

прямоугольного покрытия объекта, если его тип не

 

“линия”. Иначе возвратится значение, равное

 

OBJ_GEO_LINEBEGY.

OBJ_GEO_MAXX

OBJ_GEO_MAXY

Максимальная X-координата объекта или его минимального прямоугольного покрытия. Код не применим для объекта типа "точка". Для линий возвращается значение, равное OBJ_GEO_LINEENDX.

Максимальная Y-координата объекта или его минимального прямоугольного покрытия. Код не применим для объекта типа "точка". Для линий возвращается значение, равное OBJ_GEO_LINEENDY.

OBJ_GEO_ARCBEGANGLE

OBJ_GEO_ARCENDANGLE

OBJ_GEO_LINEBEGX

OBJ_GEO_LINEBEGY

OBJ_GEO_LINEENDX

OBJ_GEO_LINEENDY

OBJ_GEO_POINTX

OBJ_GEO_POINTY

OBJ_GEO_ROUNDRADIUS

OBJ_GEO_TEXTLINEX

OBJ_GEO_TEXTLINEY

OBJ_GEO_TEXTANGLE

Начальный угол дуги. Только для объекта типа "дуга".

Конечный угол дуги. Только для объекта типа "дуга".

X-координата начальной точки прямой линии. Только для объекта типа "линия".

Y-координата начальной точки прямой линии. Только для объекта типа "линия".

X-координата конечной точки прямой линии. Только для объекта типа "линия".

Y-координата конечной точки прямой линии. Только для объекта типа "линия".

X-координата точечного объекта.

Y-координата точечного объекта.

Диаметр окружности, которую можно вписать в закругление угла объекта типа "скругленный прямоугольник". Результат выдается в текущих координатных единицах (например, в градусах).

X-координата конца строки в текстовом объекте.

Y-координата конца строки в текстовом объекте.

Угол поворота текстового объекта.

Справочник MapBasic

359

Функция ObjectGeography( )

Функция ObjectGeography() расширена поддержкой групп точек и коллекций. Оба типа поддерживают атрибуты 1 0 4 (координаты минимального описывающего объект прямоугольника (МОП).

OBJ_GEO_MINX (1) минимальная координата X МОП.

OBJ_GEO_MINY (2) минимальная координата Y МОП.

OBJ_GEO_MAXX (3) максимальная координата X МОП.

OBJ GEO_MAXY (4) максимальная координата Y МОП.

Пример:

Здесь наряду с функцией ObjectGeography( ) используется функция ObjectInfo( ) для определения типа объекта и оператор Set Map для перемещения центра просмотра Карты в начальную точку прямой линии.

Include "MAPBASIC.DEF"

Dim i_obj_type As Integer, f_x, f_y As Float

Open Table "city"

Map From city

Fetch First From city

'

'В этом месте программы выражение city.obj

'представляет графический объект, присоединенный

'к первой строке таблицы CITY.

'

i_obj_type = ObjectInfo(city.obj, OBJ_INFO_TYPE)

If i_obj_type = OBJ_LINE Then

f_x = ObjectGeography(city.obj, OBJ_GEO_LINEBEGX)

f_y = ObjectGeography(city.obj, OBJ_GEO_LINEBEGY)

Set Map Center (f_x, f_y)

End If

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

Centroid( ), CentroidX( ), CentroidY( ), ObjectInfo( )

360

Справочник MapBasic

Функция ObjectInfo( )

Функция ObjectInfo( )

Назначение:

Возвращает стиль линии, штриха и другие величины, описывающие графический объект, а также его тип.

Синтаксис:

ObjectInfo(object, attribute)

где

object – выражение, результат которого есть величина типа Object; attribute – целочисленный код, определяющий результат функции.

Величина, полученная в результате:

Тип величины может быть SmallInt, Integer, String, Float, Pen, Brush, Symbol или Font в зависимости от значения параметра attribute.

Описание:

Функция ObjectInfo( ) возвращает основную информацию о графическом объекте, заданном параметром object. Объект может быть задан объектной переменной или выражением в формате table name.obj (где tablename – имя таблицы, к которой присоединен объект).

Каждый объект обладает некоторыми атрибутами. Например, атрибутом является тип объекта – это область, линия, дуга и т. д. Объекты определенных типов могут обладать различными наборами других атрибутов – стилей. Ими являются величины типа Pen, Brush и др. Функция ObjectInfo( ) может возвращать значения этих атрибутов. Возвращаемое значение зависит от того, каким задан параметр attribute.

Параметр attribute должен принимать значения целочисленного кода. В следующей таблице в первой колонке приводятся имена кодов для функции ObjectGeography( ), которые установлены оператором Define в файле стандартных определений MapBasic MAPBASIC.DEF. Для того, чтобы использовать имена кодов, Ваша программа в начале должна иметь оператор Include "MAPBA SIC.DEF".

Справочник MapBasic

361

Функция ObjectInfo( )

Значения attribute

OBJ_INFO_TYPE

OBJ_INFO_PEN

OBJ_INFO_BRUSH

OBJ_INFO_TEXTFONT

OBJ_INFO_SYMBOL

OBJ_INFO_NPNTS

OBJ_INFO_SMOOTH

OBJ_INFO_FRAMEWIN

OBJ_INFO_FRAMETITLE

OBJ_INFO_NPOLYGONS

OBJ_INFO_NPOLYGONS+N

OBJ_INFO_TEXTSTRING

Результат функции

Целое число типа SmallInt, определяющее тип объекта (смотрите вторую таблицу).

Величина типа Pen. Стиль линии для объектов типа "дуга", "эллипс", "линия", "полилиния", "рамка", "область", "прямоугольник" и "сглаженный прямоугольник".

Величина типа Brush. Стиль штриховки объектов типа "эллипс", "рамка", "область", "прямоугольник" и "сглаженный прямоугольник".

Величина типа Font. Стиль шрифта текстового объекта. Замечание: Если текстовый объект принадлежит таблице (а не Отчету), то размер шрифта равен нулю, а размер шрифта динамически определяется MapInfo в зависимости от размера окна Карты.

Величина типа Symbol. Стиль символа точечного объекта.

Величина типа Integer. Число узлов в полилинии или в многоугольнике области.

Величина типа Logical. Признак сглаженности объекта типа "полилиния".

Величина типа Integer. Идентификатор окна, присоединенного к объекту типа "рамка".

Величина типа String с заголовком рамки.

Величина типа SmallInt. Число полигонов в объекте типа "область" или число ломаных компонент в объекте типа "полилиния".

Величина типа Integer. Число узлов в n-ом полигоне в объекте типа "область" или число узлов в N-ой ломаной линии, являющейся компонентой объекта типа "полилиния".

Замечание: для объектов типа "область" число узлов многоугольника будет на единицу больше, чем число вершин у многоугольника, потому что MapInfo считает первый узел дважды (один раз как первый узел и второй раз как последний узел). Так, функция ObjectInfo( ) возвращает 4 для треугольной монокомпонентной области.

Величина типа String. Текстовое содержимое объекта типа "текст". Если объект состоит из нескольких строк, то результат будет включать символ конца строки (Chr$(10)).

362

Справочник MapBasic

 

 

Функция ObjectInfo( )

 

 

OBJ_INFO_TEXTSPACING

Вещественное число 1, 1.5 или 2, определяющее

 

интерлиньяж в текстовом объекте.

OBJ_INFO_TEXTJUSTIFY

Число типа SmallInt, определяющее выравнивание текста:

 

0

– по левому краю,

 

1

– по центру,

 

2

– по правому краю.

OBJ_INFO_TEXTARROW

Число типа SmallInt, определяющее стиль указки в

 

текстовом объекте:

 

0

– нет указки,

 

1

– просто линия,

 

2

– стрелка.

OBJ_INFO_FILLFRAME

Величина типа Logical. “Да” (TRUE), если объект типа

 

“рамка” показывает Карту и для него установлен режим

 

“Заполнить Рамку Картой”.

Заметим, что некоторые значения для параметра attribute могут адресоваться объектам определенного типа. Например, значение стиля символа может быть определено только для объекта типа "точка".

Если Вы используете код OBJ_INFO_TYPE как значение параметра attribute, то функция ObjectInfo( ) вернет код, соответствующий типу графического объекта. В следующей таблице приведены имена этих кодов из файла стандартных определений.

Код объекта

 

Соответствующий тип объекта

OBJ_ARC

 

Дуга

 

OBJ_ELLIPSE

 

Эллипс или окружность

OBJ_LINE

 

Прямая линия

OBJ_PLINE

 

Полилиния

OBJ_POINT

 

Точечный объект

OBJ_FRAME

 

Рамка в окне Отчета

OBJ_REGION

 

Область

OBJ_RECT

 

Прямоугольник

OBJ_ROUNDRECT

 

Скругленный прямоугольник

OBJ_TEXT

 

Текстовый объект

Функция ObjectInfo() также поддерживает следующие типы объектов:

Группа точек

Атрибут

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

Справочник MapBasic

363

Функция ObjectInfo( )

1

Короткое целое, тип объекта. Возвращаемое

OBJ_INFO_TYPE

значение для группы точек 0 это 11

2

Стиль символа.

OBJ_INFO_SYMBOL

 

11

Логическое, возвращает TRUE если объект группа

OBJ_INFO_NONEMPTY

точек имеет узлы, FALSE 0 если объект пустой.

Настройки атрибута

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

20

Целое, определяющее число узлов в группе точек.

OBJ_INFO_NPNTS

 

Коллекция

 

(1)

Короткое целое, определяющее тип объекта.

 

Возвращаемое значение для коллекции 0 это 12.

(8)

Вазвращает значение соответстующее полигонам,

OBJ_INFO_REGION

входящим в коллекцию. Если коллекция не

 

содержит полигонов, будет возвращен пустой

 

полигон. Этот запрос действует только для объектов

 

типа "коллекция".

(9)

Вазвращает значение соответстующее полилиниям,

OBJ_INFO_PLINE

входящим в коллекцию. Если коллекция не

 

содержит полилиний, будет возвращен пустой

 

полилиния. Этот запрос действует только для

 

объектов типа "коллекция".

10

Вазвращает значение соответстующее группам

OBJ_INFO_MPOINT

точек, входящим в коллекцию. Если коллекция не

 

содержит групп точек, будет возвращен пустая

 

группа точек. Этот запрос действует только для

 

объектов типа "коллекция".

11

Логическое, возвращает TRUE, если коллекция

OBJ_INFO_NONEMPTY

имеет узлы, FALSE 0 если объект пустой.

Пример:

Узнаем, какой объект присоединен к первой записи таблицы CITY.

Include "MAPBASIC.DEF"

Dim counter, obj_type As Integer

Open Table "city"

Fetch First From city

'

'В этом месте программы выражение city.obj

'представляет графический объект, присоединенный

'к первой строке таблицы CITY.

'

obj_type = ObjectInfo(city.obj, OBJ_INFO_TYPE)

364

Справочник MapBasic

Функция ObjectInfo( )

Do Case obj_type

Case OBJ_LINE

Note "Первый объект в таблице – прямая линия."

Case OBJ_PLINE

Note "Первый объект в таблице – полилиния,..." counter = ObjectInfo(city.obj, OBJ_INFO_NPNTS)

Note " ... которая имеет " + Str$(counter) + " узлов."

Case OBJ_REGION

Note "Первый объект в таблице – область,..." counter = ObjectInfo(city.obj, OBJ_INFO_NPOLYGONS)

Note ", которая состоит из " + Str$(counter) + " полигонов..." counter = ObjectInfo(city.obj, OBJ_INFO_NPOLYGONS+1)

Note "и первый полигон имеет " + Str$(counter) + " узлов"

End Case

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

Alter Object, ObjectGeography( ), Pen, Brush, Symbol, Font

Справочник MapBasic

365

Функция ObjectLen( )

Функция ObjectLen( )

Назначение:

Вычисляет географическую длину объекта типа "линия" или "полилиния".

Синтаксис:

ObjectLen(expr, unit_name)

где

expr – выражение, результат которого есть величина типа Object,

unit_name – строковая величина, задающая единицы измерения расстояний (например, "km" – километры)

Величина, полученная в результате:

Вещественное число. Величина типа Float.

Описание:

Функция ObjectLen( ) возвращает длину объекта, представленного выражением expr. Только линия или полилиния могут иметь ненулевое значение длины. Для вычисления периметра областей, эллипсов, прямоугольников используйте функцию Perimeter( ).

Функция возвращает периметр в единицах, заданных вторым параметром. Полный список строковых значений, определяющих единицы расстояний, представлен в описании оператора Set Distance Units.

Пример:

Dim geogr_length As Float

Open Table "streets"

Fetch First From streets

geogr_length = ObjectLen(streets.obj, "km")

'geogr_length теперь содержит значение длины

'сегмента улицы в километрах

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

Distance( ), Perimeter( ), Set Distance Units

366

Справочник MapBasic

Функция ObjectNodeX( )

Функция ObjectNodeX( )

Назначение:

Возвращает X-координату определенного узла определенного полигона в определенной области или X-координату узла полилинии.

Синтаксис:

ObjectNodeX(object, polygon_num, node_num)

где

object – выражение, результат которого есть величина типа Object; polygon_num – номер полигона или ломаной линии;

node_num – номер узла.

Величина, полученная в результате:

Вещественное число. Величина типа Float.

Описание:

Функция ObjectNodeX( ) возвращает координату по оси X узла полигона в области. Соответствующую координату по оси Y Вы можете получить при помощи функции ObjectNodeY( ). Параметр polygon_num должен иметь значение 1 или более. Он указывает, какой полигон (если опрашивается регион) или какая секция (если опрашивается полилиния) будет опрошен. Вызовите функцию ObjectInfo( ) для определения номера полигона в регионе или секции в полилинии. Функция ObjectNodeX() теперь поддерживает группы точек и возвращает координату X указанного узла в этом типе объекта.

Параметр node_num должен принимать целочисленные значения от 1 и более. Для задания номера узла в объекте Вы можете использовать в этом параметре вызов функции ObjectInfo( ). Координата, которую Вы получите в результате применения ObjectNodeX( ), будет выведена в системе координат, которая определена как текущая для MapBasic. Если система координат заранее не была выбрана (смотрите описание оператора Set CoordSys), то MapBasic использует систему широта/долгота.

Пример:

Здесь открывается таблица ROUTES. Если первый объект есть полилиния, то считываются координаты первого узла. На этом месте создается точечный объект.

Dim i_obj_type As SmallInt, x, y As Float,

new_pnt As Object Open Table "routes" Fetch First From routes

'В этом месте программы выражение city.obj

'представляет графический объект, присоединенный

'к первой строке таблицы ROUTES.

i_obj_type = ObjectInfo(routes.obj, OBJ_INFO_TYPE)

If i_obj_type = OBJ_PLINE Then

 

 

 

' ... тогда объект полилиния...

 

 

 

x =

ObjectNodeX(routes.obj,

1, 1)

'

чтение

долготы

y =

ObjectNodeY(routes.obj,

1, 1)

'

чтение

широты

Create Point Into Variable new_pnt (x, y)

Insert Into routes (obj)

Values (new_pnt)

End If

 

Справочник MapBasic

367

Функция ObjectNodeX( )

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

Alter Object, ObjectGeography( ), ObjectInfo( ), ObjectNodeY( ), Set CoordSys

368

Справочник MapBasic

Функция ObjectNodeY( )

Функция ObjectNodeY( )

Назначение:

Возвращает Y-координату определенного узла определенного полигона в определенной области или возвращает Y-координату узла полилинии.

Синтаксис:

ObjectNodeY(object, polygon_num, node_num)

где

object – выражение, результат которого есть величина типа Object;

polygon_num 0 это положительное целое, определяющее, какой полигон или секция опрашиваются. Параметр игнорируется для групп точек (используется для полигонов и полилиний).

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

Величина, полученная в результате:

Вещественное число. Величина типа Float.

Описание:

Функция ObjectNodeY( ) возвращает координату по оси Y узла полигона в области. Соответствующую координату по оси X Вы можете получить при помощи функции ObjectNodeX( ). Правила использования этой функции такие же, как для ObjectNodeX( ).

Пример:

Смотрите в описании функции ObjectNodeX( ).

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

Alter Object, ObjectGeography( ), ObjectInfo( ), ObjectNodeX( ), Set CoordSys

Справочник MapBasic

369

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