- •Оператор Add Column
- •Оператор Add Map
- •Оператор Alter Button
- •Оператор Alter ButtonPad
- •Оператор Alter Cartographic Frame
- •Оператор Alter Control
- •Оператор Alter MapInfoDialog
- •Оператор Alter Menu
- •Оператор Alter Menu Bar
- •Оператор Alter Menu Item
- •Оператор Alter Object
- •Оператор Alter Table
- •Оператор AutoLabel
- •Оператор Beep
- •Оператор Browse
- •Предложение Brush
- •Функция ButtonPadInfo( )
- •Оператор Call
- •Функция•CartesianArea( )
- •Функция CartesianBuffer( )
- •Функция CartesianDistance ( )
- •Функция CartesianObjectLen( )
- •Функция CartesianPerimeter( )
- •Функция Centroid( )
- •Предложение CharSet
- •Функция ChooseProjection$()
- •Оператор Close All
- •Оператор Close File
- •Оператор Close Table
- •Оператор Close Window
- •Функция CommandInfo()
- •Оператор Commit Table
- •Оператор Continue
- •Предложения Control Button / OKButton / CancelButton
- •Предложение Control CheckBox
- •Предложение Control EditText
- •Предложение Control GroupBox
- •Предложения Control ListBox / MultiListBox
- •Предложение Control PopupMenu
- •Предложение Control RadioGroup
- •Предложение Control StaticText
- •Функция ConvexHull( )
- •Предложение CoordSys
- •Оператор Create Arc
- •Оператор Create ButtonPad
- •Оператор Create ButtonPads As Default
- •Оператор Create Cartographic Legend
- •Функция CreateCircle( )
- •Оператор Create Ellipse
- •Оператор Create Frame
- •Оператор Create Grid
- •Оператор Create Index
- •Оператор Create Legend
- •Оператор Create Line
- •Оператор Create Map
- •Оператор Create Map3D
- •Оператор Create Menu
- •Оператор Create Menu Bar
- •Оператор Create Object
- •Оператор Create Pline
- •Оператор Create Point
- •Оператор Create Ranges
- •Оператор Create Rect
- •Оператор Create Redistricter
- •Оператор Create Region
- •Оператор Create Report From Table
- •Оператор Create RoundRect
- •Оператор Create Styles
- •Оператор Create Table
- •Оператор Create Text
- •Функция CreateText( )
- •Функция DateWindow( )
- •Оператор 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
- •Оператор For...Next
- •Процедура ForegroundTaskSwitchHandler
- •Функция FormatDate$
- •Оператор Function...End Function
- •Оператор Get
- •Оператор Global
- •Оператор Goto
- •Оператор Graph
- •Оператор If...Then
- •Оператор Import
- •Оператор Include
- •Оператор Input #
- •Оператор Insert
- •Функция Int( )
- •Функция IsPenWidthPixels()
- •Оператор Kill
- •Функция LabelFindByID( )
- •Функция LabelFindNext( )
- •Функция Labelinfo( )
- •Оператор Layout
- •Функция LegendFrameInfo( )
- •Функция LegendInfo( )
- •Функция LegendStyleInfo( )
- •Оператор Line Input
- •Процедура Main
- •Функция MakeCustomSymbol( )
- •Функция MakeFontSymbol( )
- •Оператор Map
- •Функция Map3dInfo( )
- •Оператор Menu Bar
- •Функция MenuitemInfoByID( )
- •Оператор Metadata
- •Оператор Note
- •Функция NumAllWindows( )
- •Оператор Objects Check
- •Оператор Objects Combine
- •Оператор Objects Enclose
- •Оператор Objects Erase
- •Оператор Objects Intersect
- •Оператор Objects Overlay
- •Оператор Objects Split
- •Оператор OnError
- •Оператор Open File
- •Оператор Open Report
- •Оператор Open Table
- •Оператор Open Window
- •Оператор Pack Table
- •Предложение Pen
- •Функция PenPattern()
- •Функция PenWidthToPoints()
- •Функция PointsToPenWidth()
- •Оператор Print
- •Оператор Print #
- •Оператор PrintWin
- •Оператор ProgressBar
- •Оператор Put
- •Оператор Randomize
- •Оператор ReDim
- •Оператор Register Table
- •Оператор Reload Symbols
- •Процедура RemoteMapGenHandler
- •Процедура RemoteMsgHandler
- •Оператор Remove Cartographic Frame
- •Оператор Remove Map
- •Оператор Rename File
- •Оператор Rename Table
- •Оператор Reproject
- •Оператор Resume
- •Оператор Rollback
- •Оператор Run Application
- •Оператор Run Command
- •Оператор Run Menu Command
- •Оператор Run Program
- •Оператор Save File
- •Оператор Save Window
- •Оператор Save Workspace
- •Оператор Seek
- •Процедура SelChangedHandler
- •Оператор Select
- •Оператор Server Begin Transaction
- •Оператор Server Bind Column
- •Оператор Server Close
- •Функция Server_ColumnInfo( )
- •Оператор Server Commit
- •Функция Server_Connect( )
- •Оператор Server Create Map
- •Оператор Server Disconnect
- •Функция Server_DriverInfo( )
- •Функция Server_EOT( )
- •Функция Server_Execute( )
- •Оператор Server Fetch
- •Функция Server_GetodbcHConn( )
- •Функция Server_GetodbcHStmt( )
- •Оператор Server Link Table
- •Функция Server_NumCols( )
- •Функция Server_NumDrivers( )
- •Оператор 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 ProgressBars
- •Оператор Set Redistricter
- •Оператор Set Resolution
- •Оператор Set Shade
- •Оператор Set Style
- •Оператор Set Table
- •Оператор Set Target
- •Оператор Set Window
- •Оператор Shade
- •Оператор StatusBar
- •Оператор Stop
- •Функция StyleAttr( )
- •Оператор Sub...End Sub
- •Предложение Symbol
- •Оператор Terminate Application
- •Функция Time()
- •Процедура ToolHandler
- •Оператор Type
- •Оператор UnDim
- •Функция UnitAbbr$( )
- •Оператор Unlink
- •Оператор Update
- •Оператор Update Window
- •Оператор While...Wend
- •Процедура WinChangedHandler
- •Процедура WinClosedHandler
- •Процедура WinFocusChangedHandler
- •Оператор Write #
- •Приложение A: Таблица кодов символов
- •Приложение В: Арифметические и географические операторы
- •ИНДЕКС
Оператор PrintWin
Оператор PrintWin
Назначение:
Печатает содержимое окна.
Синтаксис:
PrintWin [ Window window_id ] [ Interactive ]
где
window_id – идентификатор окна.
Описание:
Оператор PrintWin используется для вывода содержимого окна на печать.
Если используется предложение Window, то MapBasic будет печатать заданное окно. Если окно не задано, то напечатается содержимое активного окна.
Параметр window_id должен быть идентификатором окна, который Вы можете получить при помощи функций FrontWindow( ) и WindowInfo( ).
Если оператор включает ключевое слово Interactive, MapBasic показывает стандартный диалог "Печать". Без этого ключевого слова печать будет производиться автоматически, без диалога с пользователем, используя текущие установки печати.
ВWindows при печати изображений из окна Карты на принтере, использующем PostScript, если Карта содержит растровые изображения, иногда получаются плохие результаты. Точка растра печатается маленьким черным прямоугольником. Вы можете использовать настройки принтеров в Windows Control Panel, установив режим "Conform to Adobe Document Structuring Convention".
Всистеме Macintosh оператор PrintWin использует последние установки для печати, которая производилась перед выполнением оператора. Если перед оператором ничего не печаталось, то используются начальные установки печати, задающиеся в начале сеанса работы в Macintosh.
Пример:
Dim win_id As Integer
Open Table "world"
Map From world
win_id = FrontWindow( )
'
'Зная идентификатор окна,
'теперь можно печатать карту WORLD
PrintWin Window win_id Interactive
Смотрите также:
FrontWindow( ), Run Menu Command, WindowInfo( )
382 |
Справочник MapBasic |
Функция ProgramDirectory$( )
Функция ProgramDirectory$( )
Назначение:
Возвращает название диска и маршрут, в котором была установлена рабочая версия MapInfo.
Синтаксис:
ProgramDirectory$( )
Величина, полученная в результате:
Строка. Величина типа String.
Описание:
Функция ProgramDirectory$( ) возвращает в виде строки маршрут, по которому установлена рабочая версия MapInfo.
Пример:
Dim s_prog_dir As String
s_prog_dir = ProgramDirectory$( )
Смотрите также:
HomeDirectory$( ), SystemInfo( )
Справочник MapBasic |
383 |
Оператор ProgressBar
Оператор ProgressBar
Назначение:
Показывает диалог, иллюстрирующий выполнение процесса с кнопкой остановки и шкалой выполнения.
Синтаксис:
ProgressBar status_message
Calling handler [ Range n ]
где
status_message – срока для сообщения в диалоговом окне; handler – имя процедурыLобработчика диалога;
n – число для правого предела шкалы.
Предупреждение:
Вы не можете использовать оператор ProgressBar в окне MapBasic.
Описание:
Оператор ProgressBar используется для создания диалогового окнаLиндикатора выполнения процесса. Такой диалог снабжен процентной шкалой и кнопкой "Отменить". Диалог сопровождает определенные действия и показывает, насколько они выполнены. Выполнение можно прервать, нажав кнопку "Отменить". Информацию о том, как завершился процесс – самостоятельно или был прерван – можно узнать при помощи функции CommandInfo(CMD_INFO_DLG_OK), вызвав ее после оператора ProgressBar.
Строковый параметр status_message может задавать поясняющий текст, который будет отображен внутри диалога процесса над шкалой. Например, это может быть: "Идет процесс копирования...".
Параметр handler является именем процедурыLобработчика, выполняющей те действия, которые сопровождаются диалогом процесса. ПроцедураLобработчик является subLпроцедурой на MapBasic.
Параметр n задает число, которое будет стоять справа у шкалы в окне диалога. Например, процедура handler обрабатывает 7000 строк в таблице. Вы задаете параметр n равным семи тысячам. Теперь шкала отображает информацию о построчном выполнении процедуры. Если предложение Range отсутствует, то по умолчанию устанавливается значение 100.
Когда программа выполняет оператор ProgressBar, MapBasic вызывает подпрограмму handler. Работа, выполняемая этой процедурой, должна быть разбита на небольшие по длительности отрезки, не более нескольких секунд каждый. Это делается для того, чтобы пользователь мог нажать на кнопку "Отмена", после чего MapBasic убирает с экрана диалог, и выполнение программы передается следующему после ProgressBar оператору. Если же пользователь не нажимал на эту кнопку, MapBaL sic продолжает выполнение процедурыLобработчика handler. Если пользователь ни разу не нажал кнопку отмены, то процедураLобработчик благополучно завершает свое дело.
Поэтому в тексте процедурыLобработчика handler должны быть предусмотрены средства для разбиения процесса на небольшие отрезки, а также средства слежения за возобновлением процесса. Пока оператор ProgressBar работает, MapBasic периодически обращается к процедуреLобработчику до тех пор, пока пользователь не нажмет кнопку отмены, либо процедура не закончит работу. Для контроля за этими событиями поддерживается специальная переменная, имеющая имя ProgressBar. Если обработчик присвоит этой переменной значение "минус единица"
384 |
Справочник MapBasic |
Оператор ProgressBar
ProgressBar = 1,
то MapBasic прерывает процесс и убирает диалог с экрана. И, наоборот, любое положительное значение переменной ProgressBar, например,
ProgressBar = 50
используется MapBasic для отображения "процента выполнения" в диалоге. MapBasic вычисляет "процент выполнения" делением текущего значения переменной ProgressBar на значение переменной Range. Например, если переменной Range присвоено значение
Range 400,
то, если значение ProgressBar равно 100, "процент выполнения" будет равен 25% и это будет отображено в диалоге.
В выражениях, следующих за оператором ProgressBar, Вы можете определить причину окончания процесса, описанного в ProgressBar: либо нормальное завершение, либо нажатие на кнопку "Отмена". Для этого используется функция
CommandInfo(CMD_INFO_DLG_OK),
возвращающая значение TRUE, если процесс завершился нормально, и FALSE, если процесс был прерван пользователем.
Пример:
Этот пример демонстрирует, как должна быть написана процедура, вызываемая оператором Pro4 gressBar. Процесс в этом примере состоит из 600 итераций, это может быть однотипная обработка 600 строк таблицы. Оператор ProgressBar вызывает из основной процедуры subLпроцедуру "write_out". SubLпроцедура "write_out" обрабатывает записи в течение 2 секунд. Затем она возвращает управление, и MapBasic проверяет, не была ли нажата кнопка отмены. Если пользователь не нажимал на кнопку отмены, то MapBasic возвращает управление в процедуруLобработчик. Такая последовательность действий повторяется до тех пор, пока не будет выполнена вся задача.
Include ”mapbasic.def”
Declare Sub Main
Declare Sub write_out
Global next_row As Integer
Sub Main
next_row = 1
ProgressBar ”Мы записываем...” Calling write_out Range 600
If CommandInfo(CMD_INFO_STATUS) Then
Note ”Запись завершена! Спасибо за терпение.”
Else
Note ”Запись прервана!”
End If
End |
Sub |
|
Sub |
write_out |
|
Dim start_time As Float |
|
|
start_time = Timer() |
|
|
Справочник MapBasic |
385 |
Оператор ProgressBar
'Записи обрабатываются до тех пор, пока (a) задача
'не будет выполнена, или (b) пока не пройдут 2 секунды
Do While next_row <= 600 And Timer() start_time < 2
'''''''''''''''''''''''''''''''''''''''''''''''''''''
''' Здесь может быть любой другой продолжительный '''
''' процесс, а сейчас мы просто тянем время '''
'''''''''''''''''''''''''''''''''''''''''''''''''''''
next_row = next_row + 1 Loop
'Далее определяется причина остановки процесса:
'нормальное окончание работы или истечение
'двухсекундного срока на одну итерацию
If next_row > 600 Then
ProgressBar = 1 ' tell caller "Все сделано!"
Else
ProgressBar = next_row ' tell caller "Сделано отчасти"
End If
End Sub
Смотрите также:
CommandInfo( ), Note, Print
386 |
Справочник MapBasic |
Функция Proper$( )
Функция Proper$( )
Назначение:
Возвращает строку, преобразуя все первые буквы слов в прописные, а остальные в строчные.
Синтаксис:
Proper$(string_expr)
где
string_expr – строковое выражение.
Величина, полученная в результате:
Строка. Величина типа String.
Описание:
Функция Proper$( ) возвращает строку, полученную из строки, представленной выражением string_expr, преобразованием всех первых букв слов в прописные и остальных в строчные. Такое преобразование имеет смысл для собственных имен и названий.
Пример:
Dim name, propername As String
name = "нижний новгород" propername = Proper$(name)
'
' переменная propername равна "Нижний Новгород"
name = "AБВ 123" propername = Proper$(name)
'
' переменная propername теперь равна "Aбв 123" name = "a б в г"
propername = Proper$(name)
'
' переменная propername теперь равна "A Б В Г"
Смотрите также:
LCase$( ), UCase$( )
Справочник MapBasic |
387 |
Функция ProportionOverlap( )
Функция ProportionOverlap( )
Назначение:
Вычисляет процент перекрытия одного объекта другим.
Синтаксис:
ProportionOverlap(object1, object2)
где
object1 – объект снизу (не может быть точечным или текстовым); object2 – объект сверху (не может быть точечным или текстовым).
Величина, полученная в результате:
Величина типа Float.
Описание:
Функция ProportionOverlap( ) возвращает число, представляющее процент пересечения двух объектов по отношению к площади первого. Функцию можно заменить формулой Area(Over4 lap(object1, object2) ) / Area(object1).
Смотрите также:
AreaOverlap( )
388 |
Справочник MapBasic |