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

Оператор Create Map3D

Оператор Create Map3D

Назначение:

Создает 3D карту с определенными параметрами.

Синтаксис:

Create Map3D

[ From Window window_id | MapString mapper_creation_string ] [ Camera [ Pitch angle | Roll angle | Yaw angle | Elevation angle ] |

[ Position (x,y,z) | FocalPoint (x,y,z) ] |

[ Orientation (vu_1, vu_2, vu_3, vpn_1, vpn_2, vpn_3, clip_near, clip_far) ] ] [ Light [ Position (x,y,z) | Color lightcolor ] ]

[ Resolution (res_x, res_y) ] [ Scale grid_scale ]

[ Background backgroundcolor ] [ Units unit_name ]

window_id L идентификатор окна карты, содержащего слой поверхности. Если слой поверхности не найден, отображается сообщение об ошибке.

mapper_creation_string L определяет командную строку, которая создает текстуру (отображает объекты векторных слоев) на поверхности.

Camera определяет позицию и ориентацию камеры.

angle L угол в градусах. Горизонтальный угол в пределах от 0L360 градусов определяет поворот карты вокруг центральной точки поверхности. Вертикальный угол в диапазоне от 0L90 определяет возвышение начальной точки поверхности.

Pitch L угловая величина определяет текущее положение точки наблюдения по оси X

Roll L угловая величина определяет текущее положение точки наблюдения по оси Z

Yaw L угловая величина определяет текущее положение точки наблюдения по оси Y

Elevation L определяет поворот камеры (находящейся в точке фокуса) относительно оси X.

Position L определяет положение точки наблюдения/источника света.

FocalPoint – определяет положение точки наблюдения/точки фокуса.

Orientation L определяет ориентацию камеры ViewUp, ViewPlane Normal и Clipping Range (фиксированное отображение).

Resolution 4 количество ячеек поверхности (по X, Y). Эти значения могут быть увеличены до максимального разрешения поверхности (максимального размера ячейки Lx,y ). Если поверхность 200x200, то значения разрешения могут лежать только в пределах 200x200.

Grid scale L определяет вертикальный масштаб (в направлении ZLкоординаты). Значение >1 подчеркивает рельеф, значение <1 снижает топологические особенности (в направлении ZL координаты).

backgroundcolor L цвет, используемый для фона и определяемый функцией RGB.

Units L определяет единицы измерения точек поверхности. Не указывайте их для поверхности, созданной на основании данных температуры или плотности. Этот параметр необходимо указывать во время создания 3D Карты. Если существуют единицы измерения для значений точек поверхности, они должны быть определены во время создания ЗD Карты, так как Вы не сможете изменить(настроить) их позже с использованием диалога "Свойства 3D Карты".

130

Справочник MapBasic

Оператор Create Map3D

Описание:

В результате создается автономное окно 3D Карты, которое связано с данными тех таблиц (в окне Карты), на основании которых оно было создано. Т.е. если эти таблицы будут изменены и окно 3D Карты будет обновлено (или восстановлено из рабочего набора), все изменения отобразятся на трехмерной поверхности.

Ошибка создания будет иметь место в том случае, если window_id L не окно карты или карта не содержит слой поверхности. Если окно карты содержит несколько поверхностей, каждое будет представлено в окне 3D Карты.

3D Карта хранит информацию (строку) об окне карты для генерации текстуры. Эта строка будет также "преобладать" в Рабочем наборе, если окно 3D Карты присутствует в данном Рабочем наборе.

Пример:

Create Map3D Resolution(75,75)

Создает окно 3D карты для последнего окна Карты. Операция не будет выполнена, если окно карты не содержит слоя поверхности. Другой пример:

Create Map3D From Window FrontWindow() Resolution(100,100) Scale 2 Back

ground RGB(255,0,0) Units «ft».

Создает окно 3D карты с красным фоном, единицы по оси z Lфуты, масштабный коэффициент L 2, и разрешение 100x100.

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

Оператор Set Map3D

Справочник MapBasic

131

Оператор Create Menu

Оператор Create Menu

Назначение:

Создает новое меню или переопределяет уже существующее.

Синтаксис (вариант 1):

Create Menu newmenuname [ ID menu_id ] As

menuitem [ ID menu_item_id ] [ HelpMsg help ] { Calling handler | As menuname } [, menuitem ... ]

Синтаксис (вариант 2):

Create Menu newmenuname As Default

где

newmenuname – заголовок нового меню или стандартное имя переопределяемого меню, тип String; menuitem – имя элемента списка меню, тип String;

menu_id – идентификатор стандартного элемента меню, число типа SmallInt ID от 1 до 15; menu_item_id – целочисленный идентификатор созданного элемента меню;

menuname – заголовок меню, которое будет включено в список как подменю;

help – текст, который будет показываться в строке сообщений при указании на элемент в списке меню;

handler – либо имя процедурыLобработчика, либо код стандартной команды MapInfo, либо строка специального синтаксиса для управления событиями в системе меню через механизмы OLE или DDE; см. ниже “Предложение Calling. Если Вы задаете код команды меню MapInfo (такой как M_WINDOW_STATISTICS), то аргумент menuitem должен начинаться с восклицательного знака и содержать внутри символ каретки (^), чтобы удовлетворять синтаксису команд типа ПОКАЗАТЬ/ СКРЫТЬ.

Описание:

Если параметр newmenuname является именем одного из существующих меню (например, "File"), то оператор Create Menu переопределяет это меню. Если параметр newmenuname имеет какоеLто уникальное значение, то оператор Create Menu создает новое меню. Список стандартных имен меню MapInfo приводится в описании оператора Alter Menu.

Оператор Create Menu не показывает новое или переопределяемое меню. Для вывода меню на экран используются операторы Alter Menu Bar и Create Menu Bar. Однако, если оператор Create Menu переопределяет меню, которое есть в строке меню, то изменения в меню отображаются немедленно.

Замечание: MapInfo может одновременно поддерживать не более 48 определений меню, включая стандартные в MapInfo ("Файл" и так далее). Число это не зависит от количества меню, показываемых в данный момент на экране.

В параметре menuitem, который определяет имя элемента меню, могут использоваться специальные управляющие символы, определяющие состояние данного элемента меню (например, доступность команды в меню). Эти символьные последовательности должны задаваться в начале имени элемента. Смотрите таблицу ниже.

Следующие знаки являются зарезервированными и выполняют специальную роль: прямой слэш (/), обратный слэш(\) и знак меньше (<). Если Вы хотите использовать эти знаки в тексте меню или строке подсказки, то необходимо поставить перед зарезервированным символом обратный слэш.

132

Справочник MapBasic

Оператор Create Menu

Например, для помещения в меню "Данные" такой команды как "Клиент\Сервер", надо:

Create Menu ”Data” As

”Клиент\/Сервер” Calling cs_proc

Если текст параметра menuitem начинается с символа @, то пользовательское меню делится на две колонки. Такой элемент помещается первым во вторую колонку.

Обработчики для новых команд меню

Если параметр menuitem задает команду, то в предложении Calling handler может быть задан либо обработчик элемента меню, либо код стандартной команды MapInfo (например, код M_FILE_SAVE соответствует команде ФАЙЛ > СОХРАНИТЬ).

Если для элемента определен обработчик и если пользователь выберет в меню этот элемент, то MapL Basic автоматически вызовет процедуруLобработчик. ПроцедуройLобработчиком меню является заранее объявленная subLпроцедура без атрибутов. Если для элемента меню определен код, то Ваша программа должна в начале иметь оператор Include "MENU.DEF", подключающий файл стандартных определений для кодов команд.

С помощью необязательного предложения ID Вы можете задать элементу меню уникальный идентификатор. Вы можете связать один и тот же обработчик с разными элементами меню. В этом случае идентификатор может оказаться полезным для определения, какой именно командой была вызвана эта процедура. Определить идентификатор элемента меню из процедурыLобработчика, которую он вызвал, можно функцией CommandInfo(CMD_INFO_MENUITEM). Идентификатор элемента меню используется также в операторе Alter Menu Item.

Если за параметром menuname не задано ни команды, ни подменю, ни вызова процедуры handler, то соответствующий элемент меню будет неактивным. То есть при указании на этот элемент ничего не будет происходить. Такие элементы в меню выполняют косметическую роль (например, горизонтальная линия, разделяющая список меню на части).

Создание иерархическиUподчиненного меню

Свойства элементов меню

Элемент меню может иметь разные состояния. Команда в меню может быть недоступной для выбора пользователем. В списке меню такие команды показываются серым шрифтом. Элемент меню может также выполнять роль переключателя режима. Такая команда при выборе снабжается специальным маркером (в WinL dows это галочка). При повторном выборе маркер убирается, а установленный режим выключается.Как уже упоминалось выше, параметр menuitem может включать в себя специальные управляющие последовательности:

Управляющий код

Эффект

(L

Горизонтальная разделительная линия; такой элемент не может

 

иметь обработчик.

 

Пример: "( "

(

Элемент меню недоступен для выбора.

 

Пример: "(Закрыть"

Справочник MapBasic

133

Оператор Create Menu

($

Код для представления в меню ФАЙЛ четырех последних

 

открывавщихся файлов. Его можно применять в системе меню один

 

раз и его нельзя использовать в быстрых меню. Чтобы удалить

 

список последних открывавшихся файлов из меню ФАЙЛ, либо

 

удалите этот код из файла MAPINFOW.MNU, либо переопределите

 

меню ФАЙЛ оператором Create Menu.

(>

Код для представления в меню списка открытых окон. Его можно

 

применять в системе меню один раз.

!

Элемент меню при выборе может снабжаться галочкой, но на момент

 

создания галочка отсутствует.

 

Пример: "!Показывать предупреждения"

! ... ^ ...

Синтаксис для задания названия меню с текстом, зависящим от

 

ситуации. Текст после восклицательного знака сменяется на текст

 

после символа “^”. Поведение созданного подобным образом

 

элемента похоже на поведение следующего (текст меню снабжается

 

галочкой), однако вместо галочки показывается первый текст, а

 

вместо отсутствия галочки показывается второй текст.

 

Пример: ”!Скрыть строку сообщений^Показать строку сообщений”

!+

Элемент меню при выборе может снабжаться галочкой и на момент

 

создания галочка присутствует.

 

Пример: "!+Показывать предупреждения"

В системе Macintosh элементы могут иметь разное написание, то есть для команд может использоваться жирный шрифт, курсив, подчеркнутый, контурный и оттененный шрифты. Для достижения этого эффекта используются следующие управляющие символы в параметре menuname:

Управляющий код

Эффект (только для Macintosh)

<B

Жирный шрифт.

 

Пример: "Закрыть<B"

<I

Курсив.

<U

Подчеркнутый шрифт.

<O

Контурный шрифт.

<S

Оттененный шрифт.

Заметим, что эти коды ставятся в конце имени элемента, но перед кодами, задающими клавишное сокращение.

Задание клавишных сокращений

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

134

Справочник MapBasic

Оператор Create Menu

Клавишные сокращения первого типа имеют и имена меню, и имена элементов меню. Для того, чтобы вызвать элемент меню, воспользовавшись его клавишным сокращением, надо сначала открыть меню, используя сокращение меню или, как обычно, мышь. Например, для того, чтобы открыть окно Карты, в рабочем окне MapL Info пользователь нажимает сначала клавишное сокращение ALT+О, которым открывается список команд меню ОКНО, и только потом клавишу К (или ALT+К) для запуска команды Карта. На экране в именах меню и команд необходимые литеры подчеркнуты.

Для того, чтобы определить буквы для клавишного сокращения в меню и элементах меню, надо в текстах параметров newmenuname и menuitem использовать знак амперсанда (&) непосредственно перед нужной буквой. Например, текст "&Карта" задает команду Карта.

Другой тип клавишных сокращений позволяет вызвать команду немедленно, не открывая меню, где она находится. Например, для вызова вышеупомянутой команды КАРТА достаточно только нажать клавишу F3. Эти сокращения Вы можете увидеть в списке меню справа от команд. Управляющие коды, используемые для задания клавишного сокращения второго типа, приведены в следующей таблице.

Управляющий код

Для Windows:

/W {letter | %number}

/W# {letter | %number}

Эффект

Задает клавишное сокращение для Windows; команда активизируется клавишей letter или клавишей, заданной ее числовым кодом number.

Например: записи "Данные/WД" и "Данные/W%196"

равносильны.

Задает клавишное сокращение для Windows; команда активизируется клавишей letter или клавишей, заданной ее числовым кодом number, с нажатой клавишей SHIFT. Например: записи "Данные/W#Д" и "Данные/W#%196"

равносильны.

/W@ {letter | %number}

Задает клавишное сокращение для Windows; команда

 

активизируется клавишей letter или клавишей, заданной ее

 

числовым кодом number, с нажатой клавишей ALT.

 

Например: записи "Данные/W@Д" и "Данные/W@%196"

 

равносильны.

/W^ {letter | %number}

Задает клавишное сокращение для Windows; команда

 

активизируется клавишей letter или клавишей, заданной ее

 

числовым кодом number, с нажатой клавишей CTRL.

 

Например: записи "Данные/W^Д" и "Данные/W^%196"

 

равносильны.

Для Macintosh:

/Mletter Задает клавишное сокращение для Macintosh; команда

 

активизируется клавишей letter с нажатой клавишей COML

 

MAND.

 

Например: "Данные/MД".

В Windows для использования клавиш Fn используется возможность задавать клавишные сокращения численным кодом (%number). Так, для клавиши F1 численным кодом является 112, для

Справочник MapBasic

135

Оператор Create Menu

F2 – 113 и так далее.

Заметим, что оператор Create Menu Bar As Default убирает и переопределяет все пользовательские меню, заданные оператором Create Menu. Но если Вам надо вернуть к стандартному виду только один список меню, а не все, то используйте оператор Create Menu menuname As Default.

Предложение Calling

Предложение Calling задает, что должно случиться, если пользователь в меню выполнит команду, построенную приложением. Приведем возможные примеры использования этого предложения:

Примеры

Calling M_FILE_NEW

Описание

Если за словом Calling идет целочисленный код из файла MENU.DEF, MapInfo запускает на выполнение соответствующую стандартную команду MapInfo (например, ФАЙЛ > НОВАЯТАБЛИЦА).

Calling my_procedure

Если задано имя subLпроцедуры, MapInfo передает

 

управление этой процедуре.

Calling OLE ”methodname”

Только для Windows. MapInfo управляет событиями,

 

обращаясь с именем метода к объекту OLE Automation,

 

установленному SetCallbackLметодом MapInfo. Детали

 

смотрите в 12 главе Руководства пользователя MapBa

 

sic.

Calling DDE ”server”,”topic”

Только для Windows. MapInfo управляет событиями,

 

присоединясь через DDE к паре “сервер|тема” и посылая

 

выполняемое сообщение на DDELсервер.

В последних двух случаях строка послания для OLE или DDE сервера должна начинаться с трех символов “MI:” для того, чтобы сервер смог определить, что послание пришло от MapInfo. Остальная часть этой строки состоит из разделенного запятыми списка значений возврата функций с Com4 mandInfo(1) по CommandInfo(8). Детали читайте в 12 главе Руководства пользователя MapBasic.

Пример 1:

Оператор Create Menu создает пользовательское меню ДАННЫЕ, которое добавляется в строку меню оператором Alter Menu Bar до меню Окно (ID 6) и меню справка (ID 7):

Declare Sub Main

Declare Sub addsub

Declare Sub editsub

Declare Sub delsub

Sub Main

Create Menu "Данные" As "Добавить" Calling addsub, "Правка" Calling editsub, "Удалить" Calling delsub

136

Справочник MapBasic

Оператор Create Menu

Alter Menu Bar Remove ID 6, ID 7

Alter Menu Bar Add ”Данные”, ID 6, ID 7

End Sub

Пример 2:

В этом фрагменте оператор Create Menu создает сокращенную версию меню ФАЙЛ. Управляющий символ (делает команды ЗАКРЫТЬ, СОХРАНИТЬ и ПЕЧАТАТЬ недоступными для выбора). Для команд ОТКРЫТЬ и СОХРАНИТЬ заданы клавишные сокращения второго типа. При определении текста элемента меню используется знак табуляции – Chr$(9) для отделения клавишного сокращения.

Include "MENU.DEF"

Create Menu "Файл" As

"Новый"

Calling M_FILE_NEW,

"Открыть" +Chr$(9)+"Ctrl+О/W^J" Calling M_FILE_OPEN,

"( ",

 

"(Закрыть"

Calling M_FILE_CLOSE,

"(Сохранить" +Chr$(9)+"Ctrl+Ы /W^S" Calling M_FILE_SAVE,

"( ",

 

"(Печатать"

Calling M_FILE_PRINT,

"( ",

 

"Выход"

Calling M_FILE_EXIT

Пример 3:

Если не хотите, чтобы пользователь мог открывать быстрые меню, используйте оператор Create Menu и переопределите эти меню одним только разделителем: “(L”, как показано в следующем примере.

Create Menu ”MapperShortcut” As ”( ”

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

Create Menu Bar, Alter Menu Item

Справочник MapBasic

137

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