Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

MI6UGRU

.pdf
Скачиваний:
16
Добавлен:
13.02.2015
Размер:
14.71 Mб
Скачать

Глава 24: Использование окна MapBasic

Например, следующий оператор изменяет размер и центр окна для таблицы, изображенной на первом слое:

Set Map Layer 1 Default Zoom

Default Zoom срабатывает сразу, не дожидаясь операции сохранения таблицы.

Оператор Set Resolution

Назначение:

Устанавливает параметр графического разрешения для операций изменения типа объекта. Эта характеристика влияет на количество узлов в объекте, полученном преобразованием типа объекта.

Синтаксис:

Set Resolution node_limit

ãäå

node_limit – целое число типа SmallInt от 2 до 32 762 включительно; по умолчанию 100.

Описание:

Оператор Set Resolution устанавливает число узлов для преобразования окружности в область. По умолчанию MapInfo создает 100 узлов на окружности или дуге при преобразовании их в область и полилинию. Прирост значения разрешения приводит к более гладким результатам.

Оператор Set Resolution влияет на результаты таких команд, как ОБЪЕКТЫ > ÏРЕВРАТИТЬ В ОБЛАСТИ è ÎБЪЕКТЫ > ÏРЕВРАТИТЬ В ПОЛИЛИНИИ. Значение разрешения влияет также на результаты некоторых операторов и функций MapBasic, таких как ConvertToRegion( ) и ConvertToPline( ). Кроме этого, от значения разрешения зависят результаты операций, в которых конвертирование производится автоматически (например, Objects Split, Combine).

Установка оператора Set Resolution не влияет на создание буферной области. Оператор Create Object As Buffer и функция Buffer( ) имеют обязательный параметр, явно задающий разрешение для создания области.

567

Глава 24: Использование окна MapBasic

Оператор Set Window

Назначение:

Изменяет состояние, размер и положение окна на экране.

Синтаксис:

Set Window window_id

[ Position ( x , y ) [ Units paper_units ] ]

[ Width win_width

[ Units paper_units ] ]

[ Height win_height

[ Units paper_units ] ]

[ Font ... ]

[ Min | Max | Restore ]

[ Front ]

[ Title

{ new_title | Default } ]

[ Help

[ { File help_file | File Default | Off } [ Permanent ] ]

[ Contents ] [ ID context_ID ] [ { Show | Hide } ] [ Printer { Default | Name printer_name }

[ Orientation { Portrait | Landscape } ] [ Copies number ]

[ Papersize number ] [ Border { On | Off } ]

[ TrueColor { On | Off } ]

[ Dither { Halftone | ErrorDiffusion } ] [ Method { Device | Emf } ]

[ Transparency

[ Raster { Device | Internal } ] [ Vector { Device | Internal }] ] [ Margins

[ Left d1 ]

[ Right d2 ]

[ Top d3 ]

[ Bottom d4 ] Units <units> ] } ]

[ Export { Default |

[ Border { On | Off } ]

[ TrueColor { On | Off } ]

[ Dither { Halftone | ErrorDiffusion } ] [ Transparency

[ Raster { Device | Internal } ] [ Vector { Device | Internal }] ]

} ]

[ ScrollBars { On | Off } ]

[ Autoscroll { On | Off } ] [ Parent HWND ]

[ ReadOnly | Default Access ]

[ Table table_name Rec record_number ] [ Show | Hide ]

[ Smart Pan { On | Off } ]

568

window_id:

Глава 24: Использование окна MapBasic

[ SysMenuClose { On | Off } ]

[ Snap [ Mode { On | Off } ] [ Threshold { pixel_tolerance | Default } ]

window_id – целочисленный идентификатор окна или имя специльного (например, Statistics);

x – расстояние от верхнего края рабочего поля окна MapInfo до верхнего края перемещаемого окна;

y – расстояние от левого края рабочего поля в окне MapInfo до левого края перемещаемого окна;

paper_units – строка с именем единицы измерений на экране (например, "cm" для сантиметров);

Предложение Font определяет стиль текста

win_width новая ширина окна win_height новая высота окна

new_title строка, задающая новый заголовок окна

help_file имя файла Справочника (например, в Windows "FILENAME.HLP")

context_ID целочисленный идентификатор контекста Справочника для задания раздела

printer_name идентификатор принтера. Принтер может быть локальным или сетевым, с которым работает.

number число копий для печати.

HWND целочисленный номер окна. Окно с номером HWND станет порождающим окном по отношению к окну Легенды, Статитстики, Информации, Линейки или Сообщений

table_name имя открытой таблицы для показа в окне сообщений

record_number целое число типа Integer: значение от 1 и больше для показа определенной записи в окне Информации или 0 для показа сообщения "Нет записей".

Printer будет определять окно с новыми настройками печати.

Export будет определять окно с новыми настройками экспорта.

Default будет использовать стандартные значения, найденные в настройках для печити/экспорта.

Name определяет имя используемого принтера.

Orientation определяет портретную или альбомную ориентацию листа бумаги.

Copies number - определяет число количество печатаемых копий.

Papersize number это информация о размере листа для окна. Эти числа универсальны для всех принтеров под Windows. Например, 1 соответствует размеру Letter, 5 соответствует размеру Legal. Это число может быть найдено в файле MapBasic с именем PaperSize.def. Некоторые драйверы принтеров (например для широкоформатных плоттеров) могут использовать свою собственную нумерацию для идентификации размера бумаги и эти числа могут отличаться от тех, которые определены в файле MapBasic с именем “PaperSize.def”. По этой причине, пользователи с различными

569

Глава 24: Использование окна MapBasic

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

Border определяет, будет ли нарисована рамка вокруг печатаемой (или экспортируемой) области окна.

Truecolor определяет, будет ли генерироваться 24–битное полноцветное изображение вывода, если это возможно. Если truecolor отключен, вывод будет генерироваться с 256 цветами.

Dither определяет, какой метод растеризации используется, если надо конвертировать 24–битное изображение в 256 цветов. Эта настройка используется при выводе растровых или сеточных изображений. Растеризация осуществится, если truecolor выключен или если выводящее устройство не способно поддерживать 24–битные цвета.

Method это новое ключевое слово, определяющее, осуществляется ли посылка файла печати сразу на принтер, или через создание промежуточного файла Windows Enhanced Metafile, который потом тоже поступает на принтер. Ранее MapInfo Professional всегда посылала файл сразу на печатающее устройство. Новый метод позволяет печатать карты с растровыми изображениями, чего не получалось раньше или со значительно меьшим размером файлов спула.

Transparency Raster Internal MapInfo производит специальную обработку, если печатается растр или сетка, содержащие свойство прозрачности. Изображение разбивается на маленькие прямоугольные области, которые не содержат прозрачности. Эта настройка генерирует большие по размерам файлы, но приводит к корректному изображению при печати.

Transparency Raster Device MapInfo не делает специальной обработки, когда печатается растр или сетка, содержащие свойство прозрачности. Изображение будет генерироваться тем же методом, какой используется для отображения на экране. Может возникнуть ряд проблем, если пользоваться этой настройкой.

Transparency Vector Internal MapInfo осуществит специальную обработку, если свойство прозрачности есть у заливок и растровых символов.

Transparency Vector Device MapInfo не будет осуществлять специальную обработку, если на печать посланы файлы со свойством прозрачности заливок или растровых символов. При этом может возникнуть ряд проблем с выводом.

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

Описание:

Оператор Set Window используется для изменения размеров и положения окна, шрифта в окне, заголовка окна.

Значение кода для этого параметра Вы можете получить, используя функции FrontWindow( ) и WindowID( ). Для использования оператора Set Window по отношению к специальным окнам, таким как "Статистика", можно использовать имена окон (например, Statistics) или имена кодов (например, WIN_STATISTICS), определенных в файле стандартных определений MAPBASIC.DEF. Не забудьте включить в свою программу оператор Include "MAPBASIC.DEF".

570

 

 

Глава 24: Использование окна MapBasic

 

 

 

 

 

Èìÿ îêíà

Описание окна и его код

 

 

MapInfo

Окно программы MapInfo. Код: WIN_MAPINFO.

 

Замечание: не поддерживается в среде Macintosh.

 

 

 

MapBasic

Îêíî MapBasic. Êîä: WIN_MAPBASIC.

 

 

 

 

Help

Окно программы WinHelp (Справка). Код: WIN_HELP.

 

 

 

 

Statistics

Окно "Статистика". Код: WIN_STATISTICS.

 

 

 

 

Legend

Окно "Легенда". Код: WIN_LEGEND.

 

 

 

Окно "Информация" (которое открывается при использовании

Info

инструмента Информация). Код: WIN_INFO.

Окно "Линейка" (которое открывается при использовании

Ruler

инструмента Линейка). Код: WIN_RULER.

Окно "Сообщение" (которое открывается оператором Print). Код:

Message

WIN_MESSAGE.

Дополнительное предложение Position задает расположение окна на экране. Координаты x и y задают верхний левый угол окна Списка относительно верхнего левого угла окна MapInfo (0,0). Предложения Width и Height позволяют задать ширину и высоту окна. Параметры x, y, window_width, window_height задаются в единицах, определенных после слова Units. Если предложение Units в каком-либо из трех вышеупомянутых предложений опущено, соответственные параметры будут пониматься в "бумажных" единицах, определенных в Вашей программе (смотрите оператор Set Paper Units).

Если оператор Set Window включает в себя ключевое слово Max, окно будет максимально развернуто в рабочей области окна MapInfo. Если используется ключевое слово Min, окно будет свернуто в иконку, которая будет расположена в нижней части окна MapInfo. Заметим, что оба этих слова могут использоваться только в MapInfo для Windows.

Если окно было уже свернуто в иконку или максимально развернуто до выполнения оператора Set Window, то можно использовать ключевое слово Restore, восстанавливающее окно в прежних размерах.

Если оператор Set Window включает в себя ключевое слово Front, MapBasic помещает окно поверх остальных так, как если бы пользователь указал на полосу заголовка окна.

Предложение Position и ключевое слово Front в операторе Set Window могут использоваться для всех типов окон. Но изменять размеры, сворачивать в икону или разворачивать на весь экран можно не каждое окно (например, это нельзя сделать с окном "Линейка").

Предложение Title изменяет заголовок окна. Не может быть изменен только заголовок рабочего окна MapInfo.

Предложение SysMenuClose позволяет сделать недоступной команду Close из системного меню окна (этим меню снабжены все окна в Windows; кнопка системного меню расположена в верху окна, слева от заголовка). Эффект недоступности команды Close имеет только для пользователя MapInfo. Программа MapBasic может закрыть окно оператором Close Window. В следующем примере отключается команда Close для активного окна:

Set Window FrontWindow() SysMenuClose Off

571

Глава 24: Использование окна MapBasic

Синтаксис предложения Help

Предложение Help позволяет открывать окно Справочной системы на определенном разделе. Если Вы включили в оператор предложение Help, то опустите параметр window_id. Для определения того, какой файл Справочника должен быть открыт, используется подпредложение File. Например, следующий оператор показывает 23 раздел справочника "Custom":

Set Window Help File ”custom.hlp” ID 23

Предложение File help_file выбирает файл Справочной системы. В среде Windows Справочник открывается немедленно, если только Вы не укажете ключевого слова Hide. Предложение File Default выбирает стандартный Справочный файл MapInfo, но не открывает его. В среде MapInfo может одновременно действовать только один Справочный файл, к которому будут обращаться все MapBasic-программы. Если одна программа установит свой Справочный файл, то другие программы будут обращаться только к нему.

Предложение Off выключает Справочый файл MapInfo, и нажатия на F1 в диалогах MapInfo ни к чему не приводят. Это предложение полезно, если ВыOff интегрируете MapInfo в другую программу (например, в среду Visual Basic) и хотите скрыть от пользователя Справочник MapInfo. (Так как Справочник MapInfo может рассказать о командах и функциях, не доступных в среде Visual Basic.)

Предложение Permanent заставляет MapInfo всегда пользоваться Справочником help_file, даже если пользователь нажал F1 в диалоге MapInfo. (В среде Windows, если предложения Permanent нет, то MapInfo обращается к стандартному файлу Справки MAPINFOW.HLP как только пользователь нажмет F1 в диалоге MapInfo.) Эта установка действует до конца сеанса MapInfo или до первого оператора Set Window Help File.

Чтобы сразу открыть Справочник на нужном месте, задавайте слова Contents (для показа оглавления Справки) или ID (для показа нужной информации).

В состав пакета MapBasic не входят средства изготовления Справочников. Более подрбно Справочная система описана в Руководстве пользователя MapBasic.

Синтаксис для окон Карт и Отчетов:

Предложение ScrollBars применимо только к окнам Карт и управляет показом строки (полосы) прокрутки.

Предложение Autoscroll применимо окнам Карт и Отчетов. По умолчанию, режим автоматической прокрутки действует в Картах и Отчетах, т.е. при выполнении операции с нажатой кнопкой мыши в окне Карты и Отчета, содержимое окна автоматически сдвигается вслед за мышью при приближении ее указателя к краю окна. Чтобы отключить автоматическую прокрутку, задайте Autoscroll Off. Функция WindowInfo( ) поможет определить, в каких окнах действует режим автоматической прокрутки.

Smart Pan изменяет состояние панорамирования окна. Когда Smart Pan включен для окна Карты или Отчета, панорамирование или прокрутка используют заэкранный растр, чтобы ограничить визуальные издержки прорисовки. По умолчинию Smart Pan отключен.

Когда Smart Pan активизирован для окна Отчета, перерисовка осуществляется только для инструмента Ладошка.

572

Глава 24: Использование окна MapBasic

Когда Smart Pan активизирован для окна Карты, будут различные эффекты в зависимости от того, какой метод перемещения карты используется. Инструмент Ладошка автоматически приводит к перерисовке карты. Карта будет перемещаться более медлено, когда Smart Pan отключен. Более сложные карты будут перемещаться медленнее. Прокрутка и автопрокрутка действует подобно инструменту Ладошка, скорость прокрутки не зависит от включения Smart Pan. Когда команда MapBasic Set Map используется для центрирования или перемещения с включенным режимом Smart Redraw, окно Карты обновляется без перерисовки.

Внимание: Если заэкранный растр отключен, то Smart Pan в окне Карты ведет себя так же как и в окне Отчета.

Синтаксис для вспомогательных окон (Легенда, Линейка и т.д.):

Предложение Parent, позволяющее задать новое порождающее окно для окон легенды, Статистики, Инфрмации, Линейки или Сообщений, действует только в Windows. Окно с номером window_id становится popup-окном, подчиненным окну с номером-указателем

HWND.. Внимание: переподчинение окна таким способом изменяет значение ID для этого окна. Чтобы снова подчинить окно первоначальному “родителю”, MapInfo, задайте ноль в качестве HWND.

Предложения ReadOnly / Default Access применяются только к окну Информации и управляют возможностью изменения данных в нем. ReadOnly запрещает редактирование данных. Предложение Default Access снимает контроль со стороны MapBasic, и тогда уже действуют запреты или разрешения для самой таблицы.. Это действует для главной легенды и картографических легенд, созданных операторами Create Legend или Create Cartographic Legend.

Предложение Table позволяет выбирать данные для показа в окне Информации (и только для него). Это предложение форсирует показ окна Информации.

Предложения Show и Hide управляют показом или скрытием окон, для которых эта операция существенна (например, для Линейки), но может применяться и для окна MapInfo.

Управление принтером в MapInfo

По умолчанию окна распечатываются используя глобальные настройки принтера. При этом инициализируется принтер Windows. Используя новое предложение Name в приложениях, рабочих наборах или окне MapBasic, можно переназначить принтер для данного конкретного окна документа, и выбрать новый принтер из доступных в системе. Некоторые настройки для принтера могут также контролироваться с помощью дополнительных предложений команды. Таким образои, когда настройки принтера изменяются через пользовательский интерфейс, соответственные команды MapBasic генерируются самой MapInfo. Такие переопределения сохраняются в командах рабочего набора для конкретных окон, и они могут повторно использоваться при запуске такого рабочего набора. Сделанные настройки замены принтера мокут удаляться запуском команды Set Window Printer Default.

Коды атрибутов, WIN_INFO_PRINTER_NAME, WIN_INFO_PRINTER_ORIENT или WIN_INFO_PRINTER_COPIES, также возвращаются функцией WindowInfo().

Пример:

573

Глава 24: Использование окна MapBasic

Set Window frontwindow()

Printer Name ”\\Discovery\HP 2500CP”

Orientation Portrait

Copies 10

Оператор Set Window теперь может хранить настройки печати и экспорта, определенные для каждого окна в рабочем наборе. Что бы узнать имя принтера для окна, в MapInfo Professional, выполните команду Файл>Настройка печати. Нажмите кнопку Принтер. Используйте имя принтера, найденное в этом диалоге. Ниже показан пример фрагмента кода.

Пример:

SET WINDOW <win_id> ...

[ Printer

{ Default |

 

[ Name printer_name ]

 

[ Orientation { Portrait | Landscape } ]

 

[ Copies number ]

 

[ Papersize number ]

 

[ Border { On | Off } ]

 

[ TrueColor { On | Off } ]

 

[ Dither { Halftone | ErrorDiffusion } ]

 

[ Method { Device | EMF } ]

 

[ Transparency

 

[ Raster { Device | Internal } ]

 

[ Vector { Device | Internal }] ]

 

[ Margins

 

[ Left d1 ]

 

[ Right d2 ]

 

[ Top d3 ]

[ Bottom d4 ] Units <units>

} ]

[ Export { Default |

[ Border { On | Off } ]

[ TrueColor { On | Off } ]

[ Dither { Halftone | ErrorDiffusion } ] [ Transparency

[ Raster { Device | Internal } ] [ Vector { Device | Internal }] ]

} ]

Ниже приведен пример кода рабочего набора MapBasic для проверки настроек принтера.

!Workspace !Version 600

!Charset WindowsLatin1 Layout

Position (0.0520833,0.0520833) Units ”in”

574

Глава 24: Использование окна MapBasic

Width 5.78125 Units ”in” Height 3.625 Units ”in”

Set CoordSys Layout Units ”in”

Set Layout Ruler On Pagebreaks On Frame Contents Active

Zoom 31.6176 Center (8.51453,5.09012) Extents To Fit

Set Window FrontWindow() Autoscroll On

Set CoordSys Earth

Set Window FrontWindow() Printer

Name ”\\MY_PRINTER” Orientation Landscape Copies 1

Papersize 1

Layout

Position (4.27083,0.635417) Units ”in”

Width 5.29167 Units ”in” Height 3.09375 Units ”in”

Set CoordSys Layout Units ”in”

Set Layout Ruler On Pagebreaks On Frame Contents Active

Zoom 7.90522 Center (30.9586,16.9983) Extents To Fit

Set Window FrontWindow() Autoscroll On

Set CoordSys Earth

Set Window FrontWindow() Printer

Name ”\\MY_PLOTTER” Orientation Landscape Copies 1

Papersize 266

Margins Left 0.52 Right 0.52 Top 0.52 Bottom 0.52 Units ”in”

Экспорт окна

Ниже приведен пример кода рабочего набора MapBasic для экспорта окна.

!Workspace !Version 600

!Charset WindowsLatin1

Open Table ”E:\temp\Galway.TAB” Interactive

Map From Galway

Set Window FrontWindow() Export

Border On

TrueColor Off

Dither ErrorDiffusion

Transparency Raster Internal

Transparency Vector Internal

Save Window FrontWindow()

As ”C:\temp\ExportMap.emf”

Type ”emf”

Width 4 Units ”cm”

Height 4 Units ”cm”

Copyright ”No Copyright”

Версии рабочих наборов

MapInfo 6.0 поддерживает хранение размера бумаги в файле *.wor (рабочих наборов) для окон, из которых возможна печать. Если рабочий набор с настройками размера листа создан в версии MapInfo Professional 6.0, у него в заголовке будет стоять номер

575

Глава 24: Использование окна MapBasic

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

Если предложение Set Window ... в рабочем наборе ссылается на печатаемое окно, имеющее номер Papersize, то такое предложение Papersize должно быть удалено или превращено в комментарий, перед открытием рабочего набора в ранних версиях программы, до версии 6.0.

Настройки полей Margins, следующие далее, также должны быть удалены или превращены в комментарий перед открытием рабочего набора в ранних версиях программы.

Пример:

SET WINDOW <win_id> ...

[ Printer

{ Default |

 

[ Name printer_name ]

 

[ Orientation { Portrait | Landscape } ]

 

[ Copies number ]

[ Papersize number ]

[ Border { On | Off } ] [ TrueColor { On | Off } ]

[ Dither { Halftone | ErrorDiffusion } ] [ Method { Device | Emf } ]

[ Transparency [ Raster { Device | Internal } ]

[Vector { Device | Internal }] ]

}]

[ Export { Default |

[ Border { On | Off } ] [ TrueColor { On | Off } ]

[ Dither { Halftone | ErrorDiffusion } ] [ Transparency

[ Raster { Device | Internal } ] [ Vector { Device | Internal }] ]

} ]

Настройки радиуса совмещения

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

Настройки режима совмещения для обычного окна могут быть запрошены при использовании новых параметров атрибутов в функции WindowInfo(). Режим совмещения теперь настраивается отдельно для каждого окна и сохраняется в рабочем наборе.

576

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