- •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( )
Оператор Define
Оператор Define
Назначение:
Назначает имя для постоянной величины.
Предупреждение:
Этот оператор не может быть использован в окне MapBasic.
Синтаксис:
Define identifier definition
где
identifier – имя, слово не более 31 символа длиной, начинающееся с буквы или символа подчеркивания (_);
definition – значение, которое MapBasic подставит вместо каждого identifier в тексте программы.
Описание:
Оператор Define определяет идентификатор identifier для постоянной величины. Перед компиляцией MapBasic сначала заменяет каждый идентификатор identifier на текст, который определен параметром definition. Примеры применения оператора Define Вы можете увидеть в файле MAPBA SIC.DEF.
Строчные и прописные символы в именах идентификаторов не различаются. То есть, если Вы с помощью оператора Define задали некоторой величине идентификатор FOO, то в тексте программы можно использовать и Foo, и foo.
В операторе Define нельзя применять для имен слова, используемые как ключевые, например, Set или Create. Список "запретных" слов приведен в описании оператора Dim.
Примеры:
Оператор Define делает Вашу программу более понятной, т. к. Вы можете задать осмысленные имена константам. Например, в программе используется число π(пи), которое примерно равно 3.141593. Вы можете присвоить этой константе имя Pi и использовать его в тексте программы. Для этого в начале программы напишите:
Define PI 3.141593
В параметре definition оператора Define можно использовать кавычки.
Define FILE_NAME "World.tab"
Следующий оператор входит в состав файла стандартных определений MAPBASIC.DEF. Выполнение этого определения приводит к открытию пустого окна "Сообщение":
Define CLS Print Chr$(12)
200 |
Справочник MapBasic |
Функция DeformatNumber$( )
Функция DeformatNumber$( )
Назначение:
Очищает строку, представляющую число, от форматирующих символов.
Синтаксис:
DeformatNumber$(numeric_string)
где
numeric_string – строковая величина, представляющая число, такое как “12,345,678”
Величина, полученная в результате:
Строка. Величина типа String.
Описание:
Функция возвращает строку, представляющую число. При этом из исходного значения удаляются разделители тысяч, если они были в значении параметра numeric_string. Также заменяется знак отделения десятичной части на точку, если в строке numeric_string он не точка.
Примеры:
Функция Val( ), преобразующая строку в число, воспринимает разделители тысяч как просто текст. Потому для корректного перевода строкового представления числа в число требуется сначала применить функцию DeformatNumber$( ):
Dim s_number As String
Dim f_value As Float
s_number = ”1,222,333.4”
s_number = DeformatNumber$(s_number)
’теперь переменная s_number имеет
’значение: ”1222333.4”
f_value = Val(s_number)
Print f_value
Смотрите также:
FormatNumber$( ), Val( )
Справочник MapBasic |
201 |
Оператор Delete
Оператор Delete
Назначение:
Удаляет один или более графических объектов. Или же удаляет одну или более строк из таблицы.
Синтаксис:
Delete [Object] From table [ Where Rowid = id_number ]
где
table – имя открытой таблицы;
id_number – номер строки, целое число от 1 и более.
Описание:
Оператор Delete удаляет графический объект или всю запись, соответствующую этому объекту в таблице.
По умолчанию удаляются все строки таблицы. Если в операторе указано ключевое слово Object, то, удалив графические объекты, MapBasic не удалит записи, к которым эти объекты были присоединены.
Параметр id_number из предложения Where Rowid =... , задает номер строки, которая будет удалена из колонки. Если оператор Delete не содержит ключевого слова Object и в нем не задан номер удаляемой строки, то будут удалены все записи из таблицы.
Оператор Delete Object From отличается от оператора Drop Map. Первый действует только с объектами или записями и не влияет на структуру таблицы. Оператор Drop Map, напротив, изменяет структуру таблицы так, что из нее исключаются графические объекты.
Пример 1:
В этом примере оператор Delete удаляет все записи из таблицы CLIENTS.TAB. Сама таблица не удаляется, а становится пустой, похожей на ту таблицу, которая создается в MapInfo командой ФАЙЛ > НОВАЯ ТАБЛИЦА.
Open Table "clients.tab"
Delete From clients
Commit Table clients
Пример 2:
Оператор Delete удаляет только графический объект, присоединенный к десятой записи таблицы.
Open Table "clients.tab"
Delete Object From clients Where Rowid = 10
Commit Table clients
Смотрите также:
Drop Map, Insert
202 |
Справочник MapBasic |
Оператор Dialog
Оператор Dialog
Назначение:
Создает новое диалоговое окно.
Предупреждение:
Этот оператор не может быть использован в окне MapBasic.
Синтаксис:
Dialog
[ Title title ]
[ Width w ] [ Height h ] [ Position x, y ] [ Calling handler ]
Control control_clause
[ Control control_clause ... ]
где
title – строковая величина, которая помещается в строку заголовка диалогового окна;
h – задает высоту диалогового окна в специальных единицах измерения высоты диалога (высота одного символа в диалоге равна 8 единицам);
w – задает ширину диалогового окна в специальных единицах измерения ширины диалога (ширина одного символа в диалоге равна 4 единицам);
x, y – координаты верхнего левого угла диалога в пикселах относительно верхнего левого угла рабочей области MapInfo's (по умолчанию диалог будет расположен в середине);
handler – имя процедуры, которая выполняется перед выводом диалога на экран; обычно в эти процедуры помещаются операторы Alter Control.
Каждый параметр control_clause может быть одной из конструкций, которая начинается одним из следующих ключевых слов:
ButtonOKButtonCancelButton,
CheckBoxGroupBoxRadioGroup
EditTextStaticTextPopupMenu
PenPickerBrushPickerSymbolPicker
FontPicker ListBoxMultiListBox
Каждому типу предложения Control control_clause посвящен отдельный раздел этого настоящего
Справочника.
Описание:
Оператор Dialog создает диалоговое окно произвольного вида для организации диалога программы с пользователем.
Это так называемый модальный диалог; другими словами, пользователь должен закрыть диалог (например, нажав на кнопку "OK" или "Отмена") для того, чтобы продолжить работу с MapInfo.
Все, что находится внутри диалогового окна, называется элементами диалога. Каждый элемент создается с помощью предложения, начинающегося со слова Control. Обычно диалог содержит несколько элементов: кнопки подтверждения и отмены, окошко для ввода текста, флажки, списки. Сколько элементов должно содержать диалоговое окно, столько предложений, начинающихся со слова Control, должно быть в операторе Dialog. Тип элемента диалога задает следующее за Control ключевое слово (смотрите выше). Например, для кнопки подтверждения используется предложение
Control OKButton.
Справочник MapBasic |
203 |
Оператор Dialog
Оператор Dialog позволяет создавать Вам диалоговые окна произвольного вида. Если Вы хотите использовать стандартные диалоги в своей программе, используйте следующие операторы и функции: Ask( ), Note, ProgressBar, FileOpenDlg( ), FileSaveAsDlg( ).
Информацию об основных концепциях построения диалогового окна в MapBasic Вы можете найти в 6 главе Руководства пользователя MapBasic.
Размер и расположение элементов диалога
В операторе Dialog размер и расположение элемента диалога измеряются в долях шрифта диалога. Каждая единица измерения ширины в диалоге равна одной четвертой ширины символа (первая координата) и каждая единица измерения высоты в диалоге – одной восьмой высоты символа (вторая координата). Так, если элемент имеет ширину 40 и высоту 40, то это значит, что в элемент можно уместить слово в десять букв и список в пять строк.
Центром координат для определения места элементов диалога взят верхний левый угол окна диалога, он имеет координаты (0,0). Следующий пример определяет расположение в диалоге на пять букв правее и на две буквы ниже левого верхнего угла окна диалога:
Предложения Position, Height и Width не являются обязательными. Если Вы их опустили, то MapBasic разместит элементы по умолчанию в порядке следования соответствующих предложений Con trol в операторе.
Следует учитывать, что один и тот же диалог может в Macintosh показаться больше чем Windows, так как системный шрифт в системе Macintosh крупнее.
Закрытие диалога
Диалоговое окно, открытое MapBasic оператором Dialog, можно закрыть одним из четырех способов:
•пользователь нажимает кнопку элемента OkButton (если этот элемент присутствует в диалоге);
•пользователь нажимает кнопку элемента CancelButton (если этот элемент присутствует в диалоге);
•пользователь отменяет диалог, используя системное меню диалогового окна или клавишу ESC;
•пользователь указывает на элемент диалога, обработчик которого выполняет оператор Dia
log Remove.
Обычно для закрытия используются кнопки, создаваемые элементами OKButton или CancelButton. Но, используя обработчики для этих элементов, Вы можете перехватывать закрытие диалога. Например, после нажатия кнопки "ОК" появляется окно с вопросом: "Прежние значения записи будут утеряны. Вы хотите сохранить таблицу?". Если Вы нажали на кнопку с отрицательным ответом, Вы возвращаетесь в первый диалог.
Для достижения этого эффекта используется оператор Dialog Preserve. Оператор работает только в подпрограммах-обработчиках элементов OkButton и CancelButton.
Чтение введенных значений
После оператора Dialog с помощью функции CommandInfo( ) можно определить, как был закрыт диалог пользователем, кнопкой "OK" или "Отмена". Если пользователь нажал на кнопку "OK", то функция
CommandInfo(CMD_INFO_DLG_OK)
204 |
Справочник MapBasic |
Оператор Dialog
вернет значение TRUE.
Для определения, какие значения ввел пользователь в окошки диалога, какие режимы выбрал, есть два способа: включить предложение Into в состав оператора Dialog или вызвать функцию ReadControlValue( ) из процедуры-обработчика.
Если используется предложение Into и диалог был закрыт кнопкой типа OKButton, MapInfo присвоит финальные значения из элементов диалога соответствующим переменным. Заметим, что MapInfo обновляет значения зарезервированных переменных, только когда пользователь закрыл диалог.
Прочитать значения из диалога, пока он не закрыт, можно только из процедуры-обработчика, вызвав функцию ReadControlValue( ).
Задание клавишных сокращений для элементов диалога
Если прикладная программа выполняется в среде MapInfo для Windows, то элементам диалога могут быть назначены клавишные сокращения, которые позволяют пользователю обращаться к элементам диалога с клавиатуры.
Символ для клавишного сокращения выбирается из заголовков и подписей элементов, которые задаются элементам в предложении Title. В тексте заголовка перед нужным символом надо поставить знак амперсанда (&). На экране этот символ подчеркивается. Например, следующая конструкция создает элемент диалога Button с клавишным сокращением ALT+В
Control Button
Title "&Восстановить"
Если Вы хотите вывести сам знак амперсанда в заголовок элемента, то используйте его два раза. Например, предложение:
Title "&Вернуть && обработать"
создаст следующую подпись элемента "Вернуть & обработать".
Если Вы задаете элемент StaticText сразу до или после элемента EditText, то определенное клавишное сокращение в тексте StaticText можно использовать для перехода в окошко элемента
EditText.
Если программу, создающую диалог с использованием клавишных сокращений, запустить в среде компьютера Macintosh, то сокращения будут проигнорированы.
Порядок элементов диалога для клавиши TAB
Для изменения фокуса в диалоге при помощи клавиатуры пользователь может использовать клавишу TAB. Фокус перемещается от элемента к элементу в том порядке, в котором соответствующие предложения Control следуют в операторе Dialog.
Пример 1:
Следующий оператор Dialog строит диалог с окошком для ввода текста пользователем.
Dialog
Title "Поиск строки"
Control StaticText
Title "Введите строку для поиска:"
Control EditText
Value gs_searchfor ' это строковая глобальная переменная
Справочник MapBasic |
205 |
Оператор Dialog
Into gs_searchfor
Control OKButton
Control CancelButton
Title "Отмена"
If CommandInfo(CMD_INFO_DLG_OK) Then
'... если пользователь нажал на кнопку "OK",
'то переменной "gs_searchfor" присваивается текст,
'который ввел пользователь.
End If
Пример 2:
В следующем фрагменте Вы сможете найти применение элементов диалога всех типов.
Declare Sub resetsub |
' |
установка стандартных значений |
||
Declare Sub oksub |
' |
подпрограмма, подтверждающая |
||
|
' |
нажатие кнопки OK. |
||
Declare Sub Main |
|
|
|
|
Sub Main |
|
|
|
|
Dim maptitle As String |
' |
заголовок карты |
||
Dim showlegend As Logical |
' |
TRUE означает показ легенды |
||
Dim details As SmallInt |
' |
1 |
= полная детализация; 2 = частичная |
|
Dim quarter As SmallInt |
' |
1 |
= за 1 ый квартал;... 4 = за 4 ый, |
|
|
' |
5 |
= за весь год |
|
Dim mapscope As SmallInt |
' |
1 |
= карта города;2 = области; |
|
|
' |
3 |
= территории; |
|
|
' |
4 |
= региона;5 = карта всей страны |
|
Dim storesymbol As Symbol |
' |
стиль символа для показа торговых точек |
||
Dialog |
|
|
|
|
Title "Карта торговых точек" |
|
|
||
Width 210 |
|
|
|
|
Height 210 |
|
|
|
|
Control StaticText |
|
|
|
|
Title "Заголовок карты:" |
|
Position 5, 10 |
||
Control EditText |
|
|
|
|
Value "Торговые точки" |
|
Position 65, 8 Width 120 |
||
ID 1 |
|
|
|
|
Into maptitle |
|
|
|
|
Control GroupBox |
|
|
|
|
Title "Уровень детализации" |
Position 5, 30 |
|||
Height 40 Width 90 |
|
|
|
|
Control RadioGroup |
|
|
|
|
Title "&Всё;В&ыборчно" |
|
|
|
|
Value 2 |
|
|
|
|
ID 2 |
|
|
|
|
Into details |
|
|
|
|
Position 12, 40 |
Width |
72 |
|
Control StaticText
|
Title "Показывать пункты как:" |
|
Position 110, 30 |
|
Control SymbolPicker |
|
Position 140, 42 |
|
Into storesymbol |
206 |
Справочник MapBasic |
Оператор Dialog
Control StaticText
Title "Показать результаты для:" Position 5, 80 Control ListBox
Title "1 ого квартала;2 ого квартала;3 его квартала; 4 ого квартала;текущего месяца;года"
ID 3 |
|
Value 5 |
|
Into quarter |
|
Position 10, 92 |
Height 40 |
Control StaticText |
|
Title "Показать слои:" Position 110, 80
Control MultiListBox
Title "Улицы;Шоссе;Города;Области;Территории"
ID 4 |
|
Value 3 |
|
Position 115, 92 |
Height 40 |
Control StaticText
Title "Охват карты:" Position 5, 145
Control PopupMenu
Title "Город;Область;Территория;Регион;Вся страна"
Value 2 ID 5
Into mapscope
Position 10, 157
Control CheckBox
Title "Показывать &Легенду"
Into showlegend
ID 6
Position 115, 155
Control Button
Title "&Вернуть"
Calling resetsub
Position 10, 190
Control CancelButton
Title "Отмена"
Position 110, 190
Control OKButton
Title "OK"
Calling oksub
Position 160, 190
If CommandInfo(CMD_INFO_DLG_OK) Then
'... пользователь выбирает кнопку "OK" Else
'... пользователь выбирает кнопку "Отмена". End If
End Sub
Sub resetsub
'
' Восстановление Начальных значений в диалоге
'
Alter Control 1 Value "Торговые точки"
Справочник MapBasic |
207 |
Оператор Dialog
Alter Control 2 Value 2
Alter Control 3 Value 5
Alter Control 4 Value 3
Alter Control 5 Value 2
Alter Control 6 Value 1
End Sub
Результатом этой процедуры будет следующий диалог:
Смотрите также:
Alter Control, Ask( ), Dialog Preserve, Dialog Remove, FileOpenDlg( ), FileSaveAsDlg( ), Note,
ReadControlValue( )
208 |
Справочник MapBasic |