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

Процедура WinFocusChangedHandler

Процедура WinFocusChangedHandler

Назначение:

Процедура, автоматически выполняющаяся при изменении фокуса окна.

Синтаксис:

Declare Sub WinFocusChangedHandler Sub WinFocusChangedHandler statement_list

End Sub

Описание:

Если загруженная программа имеет процедуру WinFocusChangedHandler, то MapInfo автоматически выполняет процедуру, когда меняется фокус окна (фокус имеет активное окно). Фокус может перемещаться между всеми типами окон MapInfo (Списки, Карты и т.п.). Для определения идентификатора окна, которое стало активным, используйте в процедуре обработчика функцию CommandInfo(CMD_INFO_WIN).

В процедуре WinFocusChangedHandler не может быть использован оператор Note, процедура обработчика также не может закрывать или открывать какие-либо окна. Эти ограничения подобны тем, которые имеют и другие обработчики, такие, как SelChangedHandler.

Процедура WinFocusChangedHandler должна быть как можно короче, чтобы не замедлять работу системы.

Пример:

Следующий фрагмент текста программы показывает, как можно делать доступной или недоступной команду меню в зависимости от того, активно ли окно Карты или нет.

Include "mapbasic.def"

Include "menu.def"

Declare Sub Main

Declare sub WinFocusChangedHandler

Sub Main

'Здесь вместо комментариев должны быть операторы,

'создающие элемент меню, который может быть доступным,

'когда активно окно Карты.

End Sub

Sub WinFocusChangedHandler

Dim i_win_type As SmallInt

i_win_type=WindowInfo(CommandInfo(CMD_INFO_WIN),WIN_INFO_TYPE)

If i_win_type = WIN_MAPPER Then

'Здесь вместо комментариев должен быть оператор,

'который делает элемент меню доступным.

Else

'Здесь вместо комментариев должен быть оператор,

'который делает элемент меню недоступным.

End If

End Sub

Справочник MapBasic

645

Оператор Write #

Оператор Write #

Назначение:

Запись данных в открытый файл.

Синтаксис:

Write #file_num [, expr ... ] где

file_num – номер файла, который был присвоен ему при открытии; expr – выражение для записи в файл.

Описание:

Оператор Write # записывает определенные данные в открытый файл. Он должен быть открыт в режиме последовательного доступа оператором Open File, который закрепляет за файлом номер, используемый в параметре file_num.

Выражений expr может быть несколько, в операторе они должны быть разделены запятыми. В этом случае записанные значения в файле автоматически разделяются запятыми. Строчные значения при записи автоматически снабжаются кавычками. Если список выражений пуст, то записывается пустая строка.

Оператор Write # автоматически заключает строковые значения в кавычки при записи в файл. Чтобы записать текст в файл, не используя кавычек, используйте оператор Print #.

Для чтения записей из файла используйте оператор Input #.

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

Input #, Open File, Print #

646

Справочник MapBasic

Функция Year( )

Функция Year( )

Назначение:

Извлекает год из значения даты.

Синтаксис:

Year(date_expr)

где date_expr – выражение типа Date.

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

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

Описание:

Функция Year( ) извлекает год из даты, заданной выражением date_expr. Например, если дата задана в виде 12/17/95, то функция вернет целое число 1995.

Примеры:

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

If Year( CurDate( ) ) = 1994 Then

Note "В 1994 году..."

End If

Вы можете также использовать функцию Year( ) в операторе Select, формирующем SQLзапрос. В этом примере выбираются строки из таблицы ORDERS, в которых есть данные о заказах, сделанных в декабре 1993.

Open Table "orders"

Select * From orders

Where Month(orderdate) = 12 And Year(orderdate) = 1993

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

CurDate( ), Day( ), Month( ), Weekday( ), DateWindow( )

Справочник MapBasic

647

Приложение A: Таблица кодов символов

Приложение A: Таблица кодов символов

Следующая таблица показывает часть символов Windows Latin 1. Диапазон символов от 32 (пробел) до 126 (тильда) идентичен большинству других наборов символов. Интересны так же символы: 9 табулятор, 10 перевод строки, 12 перевод страницы и 13 возврат каретки.

 

 

 

 

648

Справочник MapBasic

Приложение В: Арифметические и географические операторы

Приложение В: Арифметические и географические операторы

Оператор задает определенное арифметическое действие над одной или более величинами или задает отношение, имеющее результат. Операторы могут классифицироваться по типу величин, с которыми они действуют, и по типу результата.

Следующие арифметические операторы работают с числами и имееют численный результат.

Оператор

Действие

Пример

+

сложение

a + b

-

вычитание

a - b

*

умножение

a * b

/

деление

a / b

\

деление по модулю (без остатка)

a \ b

Mod

остаток деления по модулю

a Mod b

^

возведение в степень

a ^ b

Два первых оператора также используются в другом контексте. Плюс используется как знак слияния (конкатенации строк). Вместо плюса можно использовать амперсанд. Минус может означать отрицательное значение.

Оператор

Действие

Пример

+

строковая конкатенация

a + b

&

строковая конкатенация

a & b

-

перемена знака числа

- a

Операторы сравнения - это операторы, сравнивающие два элемента одного типа с получением логического результата: TRUE or FALSE. Численные данные немогут сравниваться с нечисленными (например, с строкой), но сравнение возможно между величинами типов Integer, SmallInt и Float. Выражения с операторами сравнения часто используются в операторах, управляющих выполнением программы (например, в операторе If...Then).

Оператор

TRUE, если

Пример

=

сложение

a = b

<>

вычитание

a <> b

Справочник MapBasic

649

Приложение В: Арифметические и географические операторы

<

умножение

a < b

>

деление

a > b

<=

деление по модулю (без остатка)

a <= b

>=

остаток деления по модулю

a >= b

Логические операторы работают с логическими величинами и имеют в результате логическую величину: TRUE или FALSE:

Оператор

TRUE, если

Пример

And

обе величины TRUE

a And b

Or

хотя бы одна величина TRUE

a Or b

Not

отрицание

Not a

Географические операторы работают с объектными величинами и имеют в результате логическую величину: TRUE или FALSE:

Оператор

TRUE, если

Пример

Contains

если центроид объекта B лежит в

objectA Contains objectB

 

границах объектаA

 

Contains Part

если границы объекта B частично

objectA Contains Part objectB

 

лежат внутри границ объекта A

 

Contains Entire

если граница объекта B полностью

objectA Contains Entire

 

лежит внутри границ объекта A

objectB

Within

если центроид объекта А лежит в

objectA Within objectB

 

границах объекта B

 

Partly Within

если границы объекта А частично

objectA Partly Within objectB

 

лежат внутри границ объекта B

 

Entirely Within

если граница объекта А полностью

objectA Entirely Within

 

лежит внутри границ B

objectB

Intersects

если объекты имеют хотя бы одну

objectA Intersects objectB

 

общую точку

 

650

Справочник MapBasic

Приложение В: Арифметические и географические операторы

Приоритет

Скобки являются специальным оператором, который выделяет выражение внутри другого выражения. Использование скобок позволяет задавать порядок вычисления выражения, отличный от порядка, диктуемого приоритетом операторов. Ниже в виде колонки перечисленны операторы в порядке убывания приоритета. Если скобок нет, то оператор, приоритет которого выше приоритета другого, выполняется первым. Операторы из одной строки имеют равный приоритет и в выражениях выполняются слева направо (за исключением степени, она вычисляется справа налево).

Например, выражение 3 + 4 * 2 имеет результат 11 (умножение вычисляется перед сложением). Выражение (3 + 4) * 2 имеет результат 14 (скобки повышают приоритет сложения над умножением).

Порядок приоритетов выполнения операторов MapBasic

(Высокий приоритет)

скобки

возведение в степень

перемена знака

умножение, деление, деление по модулю, остаток от деления по модую

сложение, вычитание

географические операторы

операторы сравнения

Not

And

Or

(Низкий приоритет)

Справочник MapBasic

651

Приложение В: Арифметические и географические операторы

Автоматическое преобразование типов

Если Вы создали выражение с участием данных разных типов и с некоторыми одинаковыми, то MapInfo перед вычислением преобразует типы. Например, если Ваша программа вычитает из величины типа Date другую величину типа Date, MapBasic вычислит результат как целочисленный (разница дней между двумя датами).

В следующей таблице приведены правила автоматического преобразования типов MapBasic.

Оператор

Комбинации операторов

Тип результата

+

Величина типа Date + Число

Date

 

Число + Величина типа Date

Date

 

Величина типа Integer + Величина типа Integer

Integer

 

Число + число

 

 

Что-то + Что-то (все другие комбинации)

Float

 

 

String

 

Величина типа Date - Число

Date

 

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

Integer

 

Величина типа Integer - Величина типа Integer

 

 

Число - Число

Integer

 

 

Float

*

Величина типа Integer * Величина типа Integer

Integer

 

Число * Число

 

 

 

Float

/ (деление)

Число / Число

Float

\ (деление по

Число \ Число

Integer

модулю)

 

 

MOD

Число MOD Число

Integer

(остаток

 

 

деления по

 

 

модулю)

 

 

^ (степень)

Число ^ Число

Float

652

Справочник MapBasic

Приложение В: Арифметические и географические операторы

Приложение С: Техническая поддержка

Перевод программного пакета MapInfo/MapBasic Professional выполнен фирмой ЭСТИ МАП.

Все права на русскую версию MapInfo и MapBasic принадлежат фирме ЭСТИМАП, РФ, Москва, 121019, пер. Сивцев Вражек, 29/16, тел./факс (095) 2415732.

ESTI -M@.IBRAE.AC.RU

Техническая поддержка осуществляется специалистами ЭСТИ МАП и включает в себя следующее:

Консультирование пользователей MapInfo и MapBasic.

Информация о новейших разработках.

Сведения о новых версиях компонентов пакетов MapInfo и MapBasic.

Описание наиболее важных приемов работы.

Рассылка маркетинговой и технической информации.

Справочник MapBasic

653

Приложение В: Арифметические и географические операторы

654

Справочник MapBasic

 

C

Новыеиулучшенные

операторы и

функции MapBasic

 

 

 

Это новые операторы и функции, доступные для программы MapInfo Professional 7.5.

Разделы в этом Приложении:

Новые операторы и функции

Оператор Objects Move . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .656Оператор Objects Offset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .658Функция Offset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .660Функция SphericalOffset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .662Функция CartesianOffset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .664Функция OffsetXY() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .666Функция SphericalOffsetXY(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .668Функция CartesianOffsetXY(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .670

Улучшенные операторы

Функция CartesianOffsetXY(). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .670Оператор Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .673Оператор Server Create Map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .680Функция TableInfo( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .683

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