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

Оператор Save File

Оператор Save File

Назначение:

Копирует файл.

Синтаксис:

Save File old_filespec As new_filespec [ Append ] где

old_filespec – строка с именем (и, если необходимо, с маршрутом) существующего на диске файла, который не должен быть открыт;

new_filespec – строка с именем (и, если необходимо, с маршрутом), с которым будет произведена копия; при этом файл с этим именем не должен быть открыт.

Описание:

Оператор Save File копирует файл. Файл при этом должен быть закрыт для операций ввода/ вывода.

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

Не надо использовать оператор Save File для копирования файлов, являющихся компонентами таблицы (таких как filename.TAB, filename.MAP и т. п.). Для копирования таблиц правильно будет использовать оператор Commit Table... As.

Оператор Save File не может копировать файл сам в себя.

Пример:

Save File "settings.txt" As "settings.bak"

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

Kill, Rename File

420

Справочник MapBasic

Оператор Save Window

Оператор Save Window

Назначение:

Создает файл с изображением из окна так, как это делает команда в MapInfo ФАЙЛ > ЭКСПОРТ ОКНА.

Синтаксис:

Save Window window_id

 

As filespec

 

 

Type filetype

 

 

[ Width image_width

[ Units paper_units ]

]

[ Height image_height [ Units paper_units ]

]

[ Copyright notice

[ Font ... ] ]

 

где

 

 

window_id – задает идентификатор окна Карты, Отчета, Графика, Легенды, Статистики, Информации или Линейки (в качестве параметра можно использовать вызов функции

FrontWindow( ) или WindowID( )); filespec – строка, имя создаваемого файла;

filetype – строка, задающая один из форматов файла:

"BMP" – задает растровый формат Bitmap (используется только в Windows); "WMF" – задает формат метафайла в Windows (используется только в Windows);

"PICT" – задает растровый формат Macintosh PICT (используется только в Macintosh); “JPEG” – задает растровый формат JPEG;

“PNG” – задает растровый формат Portable Network Graphics; “TIFF” – задает растровый формат TIFF;

“PSD” – задает растровый формат Photoshop 3.0; image_width – число, задающее ширину в заданных единицах; image_height – число, задающее высоту в заданных единицах;

paper_units – строка, задающая единицу измерения (например, “cm” – сантиметры); notice – строка, задающая copyright; появляется внизу изображения .

Предложение Font указывает стиль текста.

Описание:

Оператор Save Window сохраняет изображение окна в файле. Действие оператора аналогично действию команды ФАЙЛ > ЭКСПОРТ ОКНА, с тем исключением, что оператор не выводит диалог на экран.

Параметр window_id должен быть целым числом, являющимся идентификатором окна. Для получения идентификатора открытого окна используются такие функции, как FrontWindow( )

и WindowID( ).

Размер изображения, полученного из окна Карты, Отчета или Графика, по умолчанию будет равен размеру самого окна. Размер изображения, полученного из окна Легенды, Информации, Статистики или Линейки, по умолчанию будет устанавливаться таким, чтобы показать в окне все данные. Вы можете определить свои размеры для экспортируемых изображений в предложениях Width и Height.

Справочник MapBasic

421

Оператор Save Window

Настройка авторских прав (Copyright)

Чтобы включить текст авторских прав в нижнюю часть изображения, используйте дополнительное предложение Copyright. Смотрите пример ниже.

MapInfo ProServer автоматически включает текст авторских прав. Чтобы стереть текс авторских прав, задайте предложение Copyright с пустой строкой (“”).

Ошибки:

В случае нехватки места на диске при экспорте окна может быть зафиксирована ошибка под номером 408. Имейте это в виду, если Вы пытаетесь создать слишком большое изображение.

Пример:

Save Window i_mapper_ID As ”riskmap.wmf” Type ”WMF”

422

Справочник MapBasic

Оператор Save Workspace

Оператор Save Workspace

Назначение:

Создает файл Рабочего Набора с текущим состоянием рабочего окна MapInfo.

Синтаксис:

Save Workspace As filespec

где

filespec – строка с именем Рабочего Набора.

Описание:

Оператор Save Workspace создает Рабочий Набор по текущему состоянию программы MapInfo. Действие оператора аналогично действию команды ФАЙЛ > СОХРАНИТЬ РАБОЧИЙ НАБОР, с тем исключением, что оператор не выводит диалог на экран.

Для загрузки существующего Рабочего Набора используйте оператор Run Application.

Пример:

Save Workspace As ”market.wor”

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

Run Application

Справочник MapBasic

423

Функция SearchInfo( )

Функция SearchInfo( )

Назначение:

Возвращает информацию о результатах поиска, сделанного функцией SearchPoint( ) или

SearchRect( ).

Синтаксис:

SearchInfo(sequence_number, attribute )

где

sequence_number – целое число от 1 до количества найденных объектов; attribute – короткое целое число, код результата функции.

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

Строка или целое число. Тип зависит от значения параметра attribute.

Описание:

После вызова функции SearchPoint( ) или SearchRect( ), осуществляющих поиск объектов на Карте, функция SearchInfo( ) обрабатывает результаты поиска.

Параметр sequence_number должен принимать значения от 1 и более. Максимальное значение для этого параметра равняется результату функции SearchPoint( ) или SearchRect( ).

Параметр attribute должен принимать значение одного из кодов, имена для которых заданы в файле стандартных определений MAPBASIC.DEF:

Значение attribute

Результат:

SEARCH_INFO_TABLE

Строка, величина типа String: имя таблицы, содержащей этот

 

объект. Если объект пренадлежит Косметическому слою, то строка

 

будет равна “CosmeticN” (где N – число от 1 и более).

SEARCH_INFO_ROW

Целое число, величина типа Integer: номер записи. Этот номер Вы

 

можете использовать в операторе Fetch или в предложении Where

 

оператора Select.

Использовать имена кодов в программе Вы можете, включив в текст Вашей программы оператор Include "MAPBASIC.DEF".

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

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

424

Справочник MapBasic

Функция SearchInfo( )

Ошибки:

В результате выполнения функции может генерироваться код ошибки ERR_FCN_ARG_RANGE, если значение параметра sequence_number больше числа найденных объектов.

Пример:

Следующая программа создает кнопки для двух инструментов. Если пользователь пользуется точечным инструментом, то программа вызывает функцию SearchPoint( ); если пользователь рисует рамки, то программа вызывает функцию SearchRect( ). В каждом случае программа использует функцию SearchInfo( ) для определения того, какие объекты попались пользователю.

Include ”mapbasic.def”

Include ”icons.def”

Declare Sub Main

Declare Sub tool_sub

Sub Main

Create ButtonPad ”Поиск” As

ToolButton Calling tool_sub ID 1

Icon MI_ICON_ARROW

Cursor MI_CURSOR_ARROW

DrawMode DM_CUSTOM_POINT

HelpMsg ”Укажите мышкой на Карту\nПоиск в точке”

Separator

ToolButton Calling tool_sub ID 2

Icon MI_ICON_SEARCH_RECT

Cursor MI_CURSOR_FINGER_LEFT

DrawMode DM_CUSTOM_RECT

HelpMsg ”Нарисуйте прямоугольник на Карте\nПоиск в рамке”

Width 3

Print ”Работает программа поиска.”

Print ”Выберите инструмент из панели Поиск”

Print ”и укажите на Карту.”

End Sub

Sub tool_sub

Эта процедура вызывается, если пользователь действует

одним из инструментов из панели Поиск.

Dim x, y, x2, y2 As Float,

i, i_found, i_row_id, i_win_id As Integer, s_table As Alias

i_win_id = FrontWindow()

If WindowInfo(i_win_id, WIN_INFO_TYPE) <> WIN_MAPPER Then Note ”Этот инструмент работает только в окне Карты.” Exit Sub

End If

Справочник MapBasic

425

Функция SearchInfo( )

’ Определяем начальную точку действия инструмента. x = CommandInfo(CMD_INFO_X)

y = CommandInfo(CMD_INFO_Y)

If CommandInfo(CMD_INFO_TOOLBTN) = 1 Then

случай, когда действует точечный инструмент.

определяем, сколько объектов содержат данную точку. i_found = SearchPoint(i_win_id, x, y)

Else

случай, когда действует инструмент, рисующий рамку.

определяем, сколько объектов содержатся в рамке.

x2 = CommandInfo(CMD_INFO_X2)

y2 = CommandInfo(CMD_INFO_y2)

i_found = SearchRect(i_win_id, x, y, x2, y2) End If

If i_found = 0 Then

Beep ’ Объектов в этом месте нет.

Else

Print Chr$(12)

If CommandInfo(CMD_INFO_TOOLBTN) = 2 Then

Print ”Прямоугольник: x1= ” + x + ”, y1= ” + y

Print ”x2= ” + x2 + ”, y2= ” + y2

Else

Print ”Точка: x=” + x + ”, y= ” + y

End If

’ Обработка результатов поиска. For i = 1 to i_found

Определяем имя таблицы, содержащей найденный объект. s_table = SearchInfo(i, SEARCH_INFO_TABLE)

Определяем номер записи, содержащей найденный объект. i_row_id = SearchInfo(i, SEARCH_INFO_ROW)

If Left$(s_table, 8) = ”Cosmetic” Then

Print ”Объект на Косметическом слое”

Else

’ извлекаем строку таблицы, содержащую объект.

Fetch rec i_row_id From s_table

s_table = s_table + ”.col1”

Print s_table

End If

Next

End If

End Sub

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

SearchPoint( ), SearchRect( )

426

Справочник MapBasic

Функция SearchPoint( )

Функция SearchPoint( )

Назначение:

Ищет объекты в заданной точке Карты.

Синтаксис:

SearchPoint(map_window_id, x, y )

где

map_window_id – идентификатор окна Карты; x – координата по оси X (например, долгота); y – координата по оси Y (например, широта).

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

Целое число. Величина типа Integer.

Описание:

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

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

Поиск имеет небольшой допуск, аналогичный допуску при действии инструмента Информация. Точки и линейные объекты, расположенные слишком близко к месту указания мышкой, считаются “найдеными”, даже если координаты нажатия кнопки мышки не совпадают с точкой или ложатся непосредственно на линию.

Для того, чтобы пользователь мог осуществить выбор точки на карте при помощи мышки, можно использовать оператор Create ButtonPad или Alter ButtonPad для создания нового инструмента. Используйте код DM_CUSTOM_POINT как код рисования “точечным” инструментом. В обработчике инструмента используйте вызов функции CommandInfo( ) для определения координат точки, которую пользователь задал новым инструментом.

Пример:

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

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

SearchInfo( ), SearchRect( )

Справочник MapBasic

427

Функция SearchRect( )

Функция SearchRect( )

Назначение:

Ищет объекты на Карте в заданном прямоугольнике (рамке).

Синтаксис:

SearchRect(map_window_id, x1, y1, x2, y2 )

где

map_window_id – идентификатор окна Карты;

x1 и y1 – координаты, задающие один из углов прямоугольника;

x2 и y2 – координаты, задающие противоположный по диагонали угол прямоугольника.

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

Целое число. Величина типа Integer.

Описание:

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

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

Механизм поиска работает аналогично механизму инструмента MapInfo ВыборLвLРамке: если центроид объекта попадает в прямоугольник, то объект включается в список найденных.

Для того, чтобы пользователь мог задавать прямоугольник на Карте при помощи мышки, можно использовать оператор Create ButtonPad или Alter ButtonPad для создания нового инструмента. Используйте код DM_CUSTOM_RECT как код рисования “рамочным” инструментом. В обработчике инструмента используйте вызов функции CommandInfo( ) для определения координат прямоугольника, который пользователь задал новым инструментом.

Пример:

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

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

SearchInfo( ), SearchPoint( )

428

Справочник MapBasic

Функция Seek( )

Функция Seek( )

Назначение:

Возвращает текущую позицию в файле для операций ввода/вывода.

Синтаксис:

Seek(filenum)

где

filenum – номер открытого файла, целое число.

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

Целое число. Величина типа Integer.

Описание:

Функция Seek( ) возвращает текущую позицию в открытом файле для операций ввода/вывода.

Значение параметра file должно быть номером файла, под которым он был открыт оператором

Open File.

Результатом функции Seek( ) будет целое число. Если файл был открыт в режиме прямого доступа, Seek( ) вернет номер записи (запись, которая будет прочитана или записана). Если файл открыт в двоичном режиме, функция вернет номер байта, который будет прочитан или записан следующей операцией ввода/вывода.

Ошибки:

В результате выполнения функции может генерироваться код ошибки ERR_FILEMGR_NOTOPEN, если файл не был открыт.

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

Get, Open File, Put, Seek

Справочник MapBasic

429

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