- •Add Cartographic Frame
- •Оператор Alter Button
- •Оператор Alter ButtonPad
- •Оператор Alter MapInfoDialog
- •Оператор Alter Menu
- •Оператор Alter Menu Item
- •Оператор Alter Object
- •Оператор Alter Table
- •Оператор Autolabel
- •Оператор Beep
- •Оператор Browse
- •Предложение Brush
- •Оператор Call
- •Предложение CharSet
- •Функция ChooseProjection$()
- •Оператор Close All
- •Оператор Close File
- •Оператор Close Table
- •Оператор Close Window
- •Оператор Commit Table
- •Оператор Continue
- •Предложение Control CheckBox
- •Предложение Control EditText
- •Предложение Control GroupBox
- •Предложение Control RadioGroup
- •Оператор Create Arc
- •Оператор Create ButtonPad
- •Оператор Create ButtonPads As Default
- •Оператор Create Cartographic Legend
- •Оператор Create Collection
- •Оператор Create Ellipse
- •Оператор Create Frame
- •Оператор Create Grid
- •Оператор Create Index
- •Оператор Create Legend
- •Оператор Create Line
- •Оператор Create Map
- •Оператор Create Map3D
- •Оператор Create Menu
- •Оператор Create Menu Bar
- •Оператор Create MultiPoint
- •Оператор Create Point
- •Оператор Create PrismMap
- •Оператор Create Ranges
- •Оператор Create Rect
- •Оператор Create Redistricter
- •Оператор Create Region
- •Оператор Create Report From Table
- •Оператор Create RoundRect
- •Оператор Create Styles
- •Оператор Create Table
- •Оператор Create Text
- •Оператор DDEExecute
- •Оператор DDEPoke
- •Оператор DDETerminate
- •Оператор DDETerminateAll
- •Оператор Declare Function
- •Оператор Declare Sub
- •Оператор Define
- •Оператор Delete
- •Оператор Dialog
- •Оператор Dialog Preserve
- •Оператор Dialog Remove
- •Оператор Dim
- •Оператор Do Case...End Case
- •Оператор Do...Loop
- •Оператор Drop Index
- •Оператор Drop Map
- •Оператор Drop Table
- •Оператор End MapInfo
- •Оператор End Program
- •Процедура EndHandler
- •Оператор Error
- •Оператор Exit Do
- •Оператор Exit For
- •Оператор Exit Function
- •Оператор Exit Sub
- •Оператор Export
- •Оператор Fetch
- •Оператор Find
- •Оператор Find Using
- •Предложение Font
- •Процедура ForegroundTaskSwitchHandler
- •Функция FormatDate$
- •Оператор Function...End Function
- •Оператор Get
- •Оператор Graph
- •оператор Import
- •Оператор Include
- •Оператор Input #
- •Оператор Insert
- •Функция IsPenWidthPixels()
- •Оператор Kill
- •Оператор Line Input
- •Процедура Main
- •Оператор Map
- •Оператор Menu Bar
- •Оператор Metadata
- •Оператор Note
- •Оператор Objects Check
- •Оператор Objects Clean
- •Оператор Objects Combine
- •Оператор Objects Disaggregate
- •Оператор Objects Enclose
- •Оператор Objects Erase
- •Оператор Objects Intersect
- •Оператор Objects Overlay
- •Оператор Objects Snap
- •Оператор Objects Split
- •Оператор OnError
- •Оператор Open File
- •Оператор Open Table
- •Оператор Open Window
- •Предложение Pen
- •Функция PenPattern()
- •Функция PenWidthToPoints()
- •Функция PointsToPenWidth()
- •Оператор Print
- •Оператор PrintWin
- •Оператор ProgressBar
- •Оператор Put
- •Оператор Randomize
- •Оператор ReDim
- •Оператор Register Table
- •Оператор Reload Symbols
- •Процедура RemoteMapGenHandler
- •Процедура RemoteMsgHandler
- •Оператор Rename File
- •Оператор Rename Table
- •Оператор Reproject
- •Оператор Resume
- •Оператор Rollback
- •Оператор Run Application
- •Оператор Run Command
- •Оператор Run Menu Command
- •Оператор Run Program
- •Оператор Save File
- •Оператор Save Workspace
- •Оператор Seek
- •Процедура SelChangedHandler
- •Оператор Select
- •Оператор Server Begin Transaction
- •Оператор Server Bind Column
- •Оператор Server Close
- •Оператор Server Commit
- •Оператор Server Create Map
- •Оператор Server Create Table
- •Оператор Server Create Style
- •Оператор Server Disconnect
- •Оператор Server Fetch
- •Оператор Server Refresh
- •Оператор Server Rollback
- •Оператор Server Set Map
- •Оператор Set Application Window
- •Оператор Set Area Units
- •Оператор Set Browse
- •Оператор Set Cartographic Legend
- •Оператор Set Command Info
- •Оператор Set CoordSys
- •Оператор Set Date Window
- •Оператор Set Digitizer
- •Оператор Set Distance Units
- •Оператор Set Drag Threshold
- •Оператор Set Event Processing
- •Оператор Set File TimeOut
- •Оператор Set Format
- •Оператор Set Graph
- •Оператор Set Handler
- •Оператор Set Layout
- •Оператор Set Legend
- •Оператор Set Map
- •Оператор Set Map3D
- •Оператор Set Next Document
- •Оператор Set Paper Units
- •Оператор Set PrismMap
- •Оператор Set ProgressBars
- •Оператор Set Redistricter
- •Оператор Set Resolution
- •Оператор Set Shade
- •Оператор Set Table
- •Оператор Set Target
- •Оператор Set Window
- •Оператор Shade
- •Оператор StatusBar
- •Оператор Stop
- •Оператор Sub...End Sub
- •Предложение Symbol
- •Оператор Terminate Application
- •Функция Time()
- •Процедура ToolHandler
- •Оператор Type
- •Оператор UnDim
- •Оператор Unlink
- •Оператор Update
- •Оператор Update Window
- •Оператор While...Wend
- •Процедура WinChangedHandler
- •Процедура WinClosedHandler
- •Процедура WinFocusChangedHandler
- •Оператор Objects Move
- •Оператор Objects Offset
- •Функция Offset()
- •Функция SphericalOffset()
- •Функция SphericalOffsetXY()
- •Функция CartesianOffsetXY()
- •Функция LayerInfo( )
- •Оператор Register
- •Оператор Server Create Map
- •Функция TableInfo( )
Оператор While...Wend
Оператор While...Wend
Назначение:
Циклически выполняет определенные действия, пока истинно определенное условие.
Синтаксис:
While condition statement_list
Wend
где
condition – выражение, управляющее выполнением цикла;
statement_list – группа операторов, выполняющаяся за один проход цикла.
Предупреждение:
Вы не можете использовать оператор цикла While... Wend в окне MapBasic.
Описание:
Оператор While... Wend является одной из конструкций цикла. MapBasic проверяет условие, заданное выражением condition. Если условие истинно, MapBasic выполняет операторы statement_list. Далее снова проверяется условие condition, и, если оно истинно, все повторяется. Цикл выполняется до тех пор, пока значение condition не станет ложным. После этого MapBasic пропустит операторы statement_list и передаст выполнение программы следующему после Wend оператору.
Заметим, что конструкция:
While condition statement_list
Wend
фактически идентична конструкции:
Do While condition statement_list
Loop
Цикл While... Wend может быть заменен одной из форм оператора Do... Loop. Использование в программе цикла While... Wend обуславливается стилистическими приверженностями каждого программиста.
Пример:
Dim psum As Float, i As Integer
Open Table "world"
Fetch First From world i = 1
While i <= 10
psum |
= |
psum + world.population |
Fetch |
Next From world |
|
i = i |
+ |
1 |
Wend |
|
|
Смотрите также:
Do... Loop, For... Next |
|
Справочник MapBasic |
635 |
Процедура WinChangedHandler
Процедура WinChangedHandler
Назначение:
Процедура, автоматически выполняющаяся при перемещении или увеличении/уменьшении изображения в окне Карты, а также при добавлении или удалении слоя.
Синтаксис:
Declare Sub WinChangedHandler Sub WinChangedHandler statement_list
End Sub
где
statement_list – список операторов процедуры.
Описание:
WinChangedHandler – зарезервированное имя для процедуры MapBasic. Когда пользователь запускает программу, в которой есть такая процедура, программа не завершается после того, как выполнятся все операторы процедуры Main и других процедур, вызванных из нее. Программа будет пребывать в режиме ожидания до тех пор, пока не произойдет перемещение и масштабирование Карты в окне или изменение размеров самого окна Карты. После этого автоматически начнется выполнение процедуры с именем WinChangedHandler. После выполнения процедуры программа вновь переходит в режим ожидания. И так всякий раз до новых изменений на экране.
В процедуре WinChangedHandler может быть использована функция CommandInfo( ) для распознавания идентификатора окна, в котором произошло изменение. Для завершения программы в теле процедуры WinChangedHandler используется оператор End Program. При этом полностью освобождается память, занимаемая программой, и после следующего изменения в окне Карты процедура WinChangedHandler уже не будет вызываться.
Одновременно в состоянии ожидания могут находиться несколько прикладных программ. Поэтому при изменении в окне Карты, автоматически выполняются все процедуры Win ChangedHandler из этих программ, одна за другой.
В некоторых случаях MapBasic вызывают процедуру WinChangedHandler на события, не связанные с изменениями размера окна. Например, рисование нового объекта вызывает процедуру WinChangedHandler.
Чтобы закрыть обработчик и удаить его из памяти, применяйте оператор End Program.
Автопрокрутка в окне Карты
MapInfo версии 4.0 автоматически сдвигает изображение в окне Карты, когда пользователь, используя, например, инструмент рисования прямоугольника, растягивая контур будущего объекта, подводит указатель мышки к краю окна. Если действия пользователя привели к автоматическому сдвигу изображения окна, MapInfo вызывает процедуру WinChangedHandler после выполнения или отмены действий инструмента.
636 |
Справочник MapBasic |
Процедура WinChangedHandler
Например, если Вы использовали инструмент Линейка и рисование каждого сегмента приводит к автопрокрутке, то MapInfo вызовет WinChangedHandler тогда, когда Вы закончите измерения двойным щелчком мышки или нажатием клавиши ESC. Если автопрокрутка произошла вследствие применения пользователем инструмента MapBasic, то MapInfo сначала вызовет обработчик инструмента, а затем процедуру WinChangedHandler.
MapInfo не будет вызывать процедуру WinChangedHandler, если пользователь вернет в предыдущее состояние изображение окна, в котором оно находилось перед автопрокруткой, или нажмет на клавишу ESC.
Автоматический сдвиг изображения Карты можно отключить с помощью оператора Set Win dow.
Пример:
Пример использования процедуры смотрите в тексте программы OVERVIEW, которая входит в стандартную поставку MapBasic.
Смотрите также:
CommandInfo( ), WinClosedHandler
Справочник MapBasic |
637 |
Процедура WinClosedHandler
Процедура WinClosedHandler
Назначение:
Процедура автоматически выполняется при закрытии окна Карты, Списка, Графика, Отчета, Геогруппы или MapBasic.
Синтаксис:
Declare Sub WinClosedHandler Sub WinClosedHandler statement_list
End Sub
где
statement_list – список операторов процедуры.
Описание:
WinClosedHandler – зарезервированное имя для процедуры MapBasic. Когда пользователь запускает программу, в которой есть такая процедура, программа не завершается после того, как выполнятся все операторы процедуры Main и других процедур, вызванных из нее. Программа будет находиться в режиме ожидания до тех пор, пока пользователь не закроет какое-нибудь окно. Как только это произойдет, программа активизируется, выполняя процедуру с именем WinClosedHandler. После выполнения процедуры программа вновь переходит в режим ожидания.
В процедуре WinChangedHandler может быть использована функция Command Info(CMD_INFO_WIN) для распознавания идентификатора окна, в котором произошло изменение. Для завершения программы в теле процедуры WinChangedHandler используется оператор End Program. При этом полностью освобождается память, занимаемая прикладной программой, и после следующего изменения в окне Карты процедура WinChangedHandler уже не будет вызываться.
Одновременно в состоянии ожидания могут находиться несколько прикладных программ. Поэтому, как только окно будет закрыто, автоматически выполняются все процедуры Win ClosedHandler из этих программ, одна за другой.
Смотрите также:
CommandInfo( ), EndHandler, RemoteMsgHandler, SelChangedHandler, ToolHandler, Win
ChangedHandler
638 |
Справочник MapBasic |
Функция WindowID( )
Функция WindowID( )
Назначение:
Возвращает идентификатор окна, заданного его номером на экране.
Синтаксис:
WindowID(window_num)
где
window_num – величина типа SmallInt, номер окна.
Величина, полученная в результате:
Целое число. Величина типа Integer.
Описание:
Функция WindowID( ) возвращает уникальный номер окна. Некоторые операторы MapBasic, такие, как Set Map, используют идентификатор в качестве параметра.
В следующей таблице приводятся возможные способы задания парметра window_num:
Значение window_num
Положительное целое число (величина типа Smallint), например, 1, 2, ... n
Результат
MapInfo возвращает идентификатор документального окна, такого, как Карта, Список. Например, если задана единица, то MapInfo возвращает идентификатор первого документального окна. Заметим, что значение n можно получить с помощью функции NumWindows( ).
Отрицательное целое число (величина типа Smallint), например, -1, -2, ... m
MapInfo возвращает идентификатор как документального окна, так и другого плавающего окна, такого как Информация. Заметим, что значение m можно получить с помощью функции NumAllWindows( ). Используя этот синтаксис, Вы можете вызывать функцию WindowID( ) в цикле для построения списка всех открытых окон.
Ноль (0) |
MapInfo возвращает ID-номер окна либо последнего из |
|
открытых документов, либо легенды, созданной |
|
пользователем, либо инструментальной панели; или ноль, |
|
если окна не открывались. |
Код окна |
Если Вы задали код от 1001 до 1013, то MapInfo вернет |
(например, WIN_RULER) |
идентификатор соответствующего специального окна. Имена |
|
кодам назначены в файле стандартных определений MAPBA- |
|
SIC.DEF. Например, код WIN_RULER, имеющий значение |
|
1007, представляет окно Линейка. |
Ошибки:
ERR_BAD_WINDOW_NUM, если неверно значение аргумента.
Смотрите также:
FrontWindow( ), NumWindows( )
Справочник MapBasic |
639 |
Функция WindowInfo( )
Функция WindowInfo( )
Назначение:
Возвращает информацию об открытом окне.
Синтаксис:
WindowInfo(window_id, attribute)
где
window_id – целочисленный идентификатор окна; attribute – целое число, код необходимой информации.
Величина, полученная в результате:
Тип результата зависит от значения параметра attribute.
Описание:
Функция WindowInfo( ) возвращает определенную информацию об открытом окне.
Параметр window_id задает идентификатор окна. Значения идентификатора можно получить, используя функции FrontWindow( ) и WindowID( ).
Многим кодам, используемых в параметрам, определены имена в файле MAPBASIC.DEF, которые Вы можете использовать в функции WindowInfo( ), если в начале программы есть строка Include "MAPBASIC.DEF".
В следующей таблице приводятся возможные способы задания парметра window_num:
Значение window_num
Целочисленный идентификатор
Положительное целое число (величина типа Smallint), например, 1, 2, ... n
Отрицательное целое число (величина типа Smallint), например, -1, -2, ... m
Ноль (0)
Описание
Для задания окна, о котором хотите получить информацию можно использовать его идентификатор, котрый, в свою очередь, можно получить с помощью функций
FrontWindow( ) или WindowID( ).
Функция возвращает информацию о документальном окне, таком, как Карта или Список. Например, если задана единица, то MapInfo возвращает информацию о первом документальном окне. Заметим, что значение n можно получить с помощью функции NumWindows( ).
Функция возвращает информацию как о документальном окне, так и о другом плавающем окне, таком, как Информация. Заметим, что значение m можно получить с помощью функции NumAllWindows( ). Используя этот синтаксис, Вы можете вызывать функцию WindowInfo( ) в цикле для построения списка информации обо всех открытых окнах.
Функция опрашивает последнее из открывавшихся окон. Если окна не открыты, порождается ошибка.
640 |
Справочник MapBasic |
|
Функция WindowInfo( ) |
|
|
|
|
Код окна |
Если Вы задали код от 1001 до 1013, то MapInfo вернет |
|
(например, WIN_RULER) |
информацию о соответствующем специальном окне. Имена |
|
|
кодам назначены в файле стандартных определений MAP- |
|
|
BASIC.DEF. Например, код WIN_RULER, имеющий |
|
|
значение 1007, представляет окно Линейка. |
Теперь рассмотрим зависимость результата от значения параметра attribute.
Значение attribute
WIN_INFO_AUTOSCROLL
WIN_INFO_CLONEWINDOW
WIN_INFO_HEIGHT
WIN_INFO_LEGENDS_MAP
WIN_INFO_NAME
WIN_INFO_OPEN
WIN_INFO_STATE
WIN_INFO_SYSMENUCLOSE
WIN_INFO_TABLE
WIN_INFO_TOPMOST
Результат WindowInfo( attribute )
Логическая величина: “Да” (TRUE), если режим автоматического сдвига включен. Изменение этого режима делается оператором Set Window.
Строка с оператором MapBasic, который может быть использован в операторе Run Command для дублирования окна. Смотрите описание оператора Run Command.
Число типа Float, высота окна в "бумажных" единицах измерения, установленных оператором Set Paper Units.
Целое число: если вы составляете запрос об окне Легенды, открытом оператором Create Legend, то резутьтатом будет идентификатор соответствующего окна Карты или Графика. Если окно Легенды стандартно, то результатом будет 0.
Строка с именем окна.
Логическая величина, определяющая, открыто ли окно (используется для таких окон как "Статистика").
Короткое целое число (тип SmallInt): WIN_STATE_NORMAL, если окно раскрыто, но меньше окна MapInfo;
WIN_STATE_MINIMIZED, если окно свернуто в иконку; WIN_STATE_MAXIMIZED, если окно имеет максимальный размер.
Логическая величина: “Нет” (FALSE), если оператор Set Window нейтрализовал команду CLOSE из системного меню окна.
Строка с именем временной таблицы: "Cosmeticn", если определено окно Карты; "Layoutn", если определено окно Отчета;
где n – номер окна. Для окон Списка и Графика результатом будет имя таблицы, показанной в окне.
Логическая величина. Если окно активно, значение будет истинно (TRUE).
Справочник MapBasic |
641 |
Функция WindowInfo( )
WIN_INFO_TYPE
WIN_INFO_WIDTH
WIN_INFO_WINDOWID
WIN_INFO_WND
WIN_INFO_WORKSPACE
WIN_INFO_X
WIN_INFO_Y
WIN_INFO_PRINTER_NAME
WIN_INFO_PRINTER_ORIENT
WIN_INFO_PRINTER_COPIES WIN_INFO_SNAPMODE
WIN_INFO_SNAPTHRESHOLD
WIN_INFO_PRINTER_PAPERSI ZE
WIN_INFO_PRINTER_LEFT_MA RGIN
WIN_INFO_PRINTER_RIGHT_ MARGIN
WIN_INFO_PRINTER_TOP_MA RGIN
Число типа SmallInt, определяющее тип окна (например, WIN_LAYOUT). Смотрите следующую таблицу.
Число типа Float, ширина окна в "бумажных" единицах измерения, установленных оператором Set Paper Units.
Целое число, идентификатор окна. Результат такой же, как у функции WindowID( ). Это можно использовать для передачи нуля как window_spec.
Целое число. В среде Windows представляет Windows HWND для опрашиваемого окна.
Строка с операторами MapBasic, с помощью которых запоминается Карта в Рабочем Наборе. Отличается от результата функции с кодом WIN_INFO_CLONEWINDOW тем, что результат включает в себя операторы Open Table и др.
Число типа Float, расстояние от левого края нашего окна до левого края рабочего поля MapInfo (в "бумажных" единицах).
Число типа Float, расстояние от верхнего края нашего окна до верхнего края рабочего поля MapInfo (в "бумажных" единицах).
Возвращает строку с идентификатором принтера (например, \\DISCOVERY\HP4_DEVEL)
Возвращает WIN_PRINTER_PORTRAIT или WIN_PRINTER_LANDSCAPE
Возвращает integer number of copies.
Возвращает a logical value. TRUE if snap mode is on. FALSE if snap mode is off. The value for WIN_INFO_SNAPMODE is 19.
Возвращает короткое целое, устойчивость в пикселах. Значение для WIN_INFO_SNAPTHRESHOLD это 20.
Целая величина. Смотрите в файле Papersize.def file объяснение значений возвращаемой величины.
Вещественное: левое поле области печати в текущих единицах длины.
Вещественное: правое поле области печати в текущих единицах длины.
Вещественное: верхнее поле области печати в текущих единицах длины
642 |
Справочник MapBasic |
Функция WindowInfo( )
WIN_INFO_PRINTER_BOTTOM _MARGIN
WIN_INFO_PRINTER_BORDER
WIN_INFO_PRINTER_TRUECO LOR
WIN_INFO_PRINTER_DITHER
WIN_INFO_PRINTER_METHOD
WIN_INFO_PRINTER_TRANSPR ASTER
WIN_INFO_PRINTER_TRANSPV ECTOR
WIN_INFO_EXPORT_BORDER
WIN_INFO_EXPORT_TRUECOL OR
Вещественное: нижнее поле области печати в текущих единицах длины.
Строковая величина: ON если рамка вокруг окна изображается при печати, OFF если нет.
Строковая величина: ON если используется 24-битеый true color для печати растров и сеток(grid). Это бывает когда изображение 24 битное и принтер поддерживает более 256 йветов, OFF в противном случае.
Строковая величина: возвращает метод растеризации, который используется если надо конвертировать 24-битное изображение в 256 цветов. Возвращаемые значения HALFTONE и ERRORDIFFUSION. Эта настройка используется при печати растров и сеточных файлов (grid). Растеризация произойдет, если WIN_INFO_PRINTER_TRUECOLOR невозможно или если принтер поддерживает только 256 цветов или менее.
Строковая величина: возвращает значения DEVICE и EMF.
Строковая величина: возвращает значения DEVICE и INTERNAL.
Строковая величина: возвращает значения DEVICE и INTERNAL.
Строковая величина: возвращает значения ON и OFF
Строковая величина: возвращает значения ON и OFF.
WIN_INFO_EXPORT_DITHER |
Строковая величина: возвращает значения HALFTONE и |
|
ERRORDIFFUSION. |
WIN_INFO_EXPORT_TRANSPR |
Строковая величина: возвращает значения DEVICE и |
ASTER |
INTERNAL |
Если Вы используете в качестве параметра attribute код WIN_INFO_TYPE, функция WindowInfo( ) вернет код вида окна. Имена для этого кода перечислены в первой колонке в следующей таблицы:
Код в результате |
Описание окна |
WIN_MAPPER |
Окно Карты |
WIN_BROWSER |
Окно Списка |
WIN_LAYOUT |
Окно Отчета |
WIN_GRAPH |
Окно Графика |
Справочник MapBasic |
643 |
Функция WindowInfo( )
WIN_HELP |
Окно Справочной системы |
WIN_MAPBASIC |
Окно MapBasic |
WIN_MESSAGE |
Окно "Сообщение" (вызывается оператором Print). |
WIN_RULER |
Окно "Линейка" (вызывается инструментом Линейка) |
WIN_INFO |
Окно "Информация" (вызывается инструментом Информация) |
WIN_LEGEND |
Окно "Легенда" |
WIN_STATISTICS |
Окно "Статистика" |
WIN_MAPINFO |
Рабочее окно программы MapInfo |
WIN_BUTTONPAD |
Окно инструментальной панели |
Каждое окно Карты создает специальную временную таблицу, которая содержит данные для Косметического слоя Карты. Эти таблицы (имеющие имена "Cosmetic1", "Cosmetic2" и т.д.) пользователь не видит.
Аналогично, окна Отчетов также поддерживают временные скрытые от пользователя таблицы с именами вида "Layout1", "Layout2" и т.д. Вы можете получить эти имена от функции
WindowInfo( ) используя код WIN_INFO_TABLE.
Ошибки:
В результате выполнения функции могут генерироваться следующие коды ошибок: ERR_FCN_ARG_RANGE, если неправильно значение аргумента attribute; ERR_BAD_WINDOW, если неправильно значение аргумента window_id.
Пример:
В следующем примере открывается окно Статистика, если оно уже не открыто.
If Not WindowInfo(WIN_STATISTICS,WIN_INFO_OPEN) Then
Open Window WIN_STATISTICS
End If
Смотрите также:
Map, Browse, Graph
644 |
Справочник MapBasic |