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

Оператор Note

Оператор Note

Назначение:

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

Синтаксис:

Note message

где

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

Описание:

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

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

Пример:

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

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

Ask( ), Dialog, Print

332

Справочник MapBasic

Функция NumAllWindows( )

Функция NumAllWindows( )

Назначение:

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

Синтаксис:

NumAllWindows( )

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

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

Описание:

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

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

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

NumWindows( ), WindowID( )

Справочник MapBasic

333

Функция 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( )

334

Справочник 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

335

Функция 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( )

336

Справочник MapBasic

Функция NumWindows( )

Функция NumWindows( )

Назначение:

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

Синтаксис:

NumWindows( )

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

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

Описание:

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

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

Пример:

Dim num_open_wins As SmallInt

num_open_wins = NumWindows( )

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

NumAllWindows( ), WindowID( )

Справочник MapBasic

337

Функция ObjectGeography( )

Функция ObjectGeography( )

Назначение:

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

Синтаксис:

ObjectGeography(object, attribute)

где

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

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

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

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

Описание:

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

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

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

338

Справочник MapBasic

Функция ObjectGeography( )

Значения attribute

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

 

 

OBJ_GEO_MINX

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

 

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

 

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

 

OBJ_GEO_LINEBEGX.

OBJ_GEO_MINY

OBJ_GEO_MAXX

OBJ_GEO_MAXY

Минимальная YLкоордината минимального прямоугольного покрытия объекта, если его тип не “линия”. Иначе возвратится значение, равное OBJ_GEO_LINEBEGY.

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

Максимальная YLкоордината объекта или его минимального прямоугольного покрытия. Код не применим для объекта типа "точка". Для линий возвращается значение, равное 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

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

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

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

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

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

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

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

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

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

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

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

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

Справочник MapBasic

339

Функция ObjectGeography( )

Пример:

Здесь наряду с функцией 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( )

340

Справочник 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 "MAPBA4 SIC.DEF".

Справочник MapBasic

341

Функция 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. Число узлов в nLом полигоне в объекте типа "область" или число узлов в NLой ломаной линии, являющейся компонентой объекта типа "полилиния".

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

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

342

Справочник 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

 

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

Пример:

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

Include "MAPBASIC.DEF"

Dim counter, obj_type As Integer

Справочник MapBasic

343

Функция ObjectInfo( )

Open Table "city"

Fetch First From city

'

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

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

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

'

obj_type = ObjectInfo(city.obj, OBJ_INFO_TYPE)

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

344

Справочник MapBasic

Функция 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

Справочник MapBasic

345

Функция ObjectNodeX( )

Функция ObjectNodeX( )

Назначение:

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

Синтаксис:

ObjectNodeX(object, polygon_num, node_num)

где

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

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

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

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

Описание:

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

Параметр 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

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

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

346

Справочник MapBasic

Функция ObjectNodeY( )

Функция ObjectNodeY( )

Назначение:

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

Синтаксис:

ObjectNodeY(object, polygon_num, node_num)

где

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

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

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

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

Описание:

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

Пример:

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

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

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

Справочник MapBasic

347

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