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

Оператор Alter Button

Оператор Alter Button

Назначение:

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

Синтаксис:

Alter Button { handler | ID button_id } [ { Enable | Disable } ]

[ { Check | Uncheck } ]

где

handler – обработчик, который уже назначен существующей кнопке (обработчиком может быть имя процедуры MapBasic и стандартный командный код из файла MENU.DEF, например, M_TOOLS_RULER или M_WINDOW_LEGEND);

button_id – идентификатор кнопки.

Описание:

Если оператор Alter Button использует обработчик (например, имя процедуры), то изменения затронут все кнопки, вызывающие этот обработчик. Если используется предложение ID, то MapInfo изменяет только кнопку с номером button_id.

Ключевое слово Disable делает кнопку недоступной. Кнопка закрашивается серым цветом и не реагирует на указание мышкой. Ключевое слово Enable возвращает кнопку в активное состояние.

Слова Check и Uncheck нажимают или отжимают кнопку типа ToggleButton (кнопку, для которой состояние выбора фиксируется). Ключевое слово Check назначает кнопке состояние нажатия; на экране эта кнопка будет зафиксирована нажатой. Например, для кнопки "Показать окно статистики":

Alter Button M_WINDOW_STATISTICS Check

Замечание: нажатие кнопки таким образом не означает автоматическое выполнение действий, закрепленных за кнопкой; так, например, выбор кнопки Показать/скрыть Статистику оператором Alter Button не открывает окно "Статистика", а только показывает эту кнопку нажатой на экране. Для выполнения действий кнопки в данном случае надо использовать соответствующие операторы, то есть открыть окно "Статистика" оператором Open Window Statistics.

Вы можете использовать слово Check для изменения состояния только для типа кнопок TooButton. Однако, изменение состояния нажатия на кнопку типа ToolButton не то же самое, что и выбор инструмента этой кнопкой. Для выбора инструмента после изменения состояния кнопки Вы можете использовать оператор Run Menu Command, например:

Run Menu Command M_TOOLS_RULER

Имя кода M_TOOLS_RULER, использованное в этом примере, определено в файле MENU.DEF – файле стандартных определений для системы меню MapInfo.

Для того, чтобы активизировать созданный инструмент, используется оператор Run Menu Com mand ID IDnum.

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

Alter ButtonPad, Create ButtonPad, Run Menu Command

Справочник MapBasic

13

Оператор Alter ButtonPad

Оператор Alter ButtonPad

Назначение:

Показывает/скрывает инструментальную панель или добавляет/переопределяет в ней кнопку.

Синтаксис:

Alter ButtonPad { pad_name | ID pad_num }

[ Add button_definition [ button_definition ... ] ] [ Remove { handler_num | ID button_id } [, ... ] ] [ Title new_title ]

[ Width w ]

[ Position ( x, y ) [ Units unit_name ] ] [ { Show | Hide } ]

[ ToolbarPosition ( row, column ) ] [ { Show | Hide } ]

[ { Fixed | Float } ] [ Destroy ]

где

pad_name – имя панели (например, "Операции");

pad_num – идентификатор инструментальной панели (1 – для панели "Операции", 2 – для панели "Пенал", 3 – для панели "Программы", 4 – ”Команды”, 5 – “ODBC”);

button_id – уникальный идентификатор для новой кнопки;

handler_num – целочисленный код обработчика (например, M_TOOLS_RULER), определенный в файле MENU.DEF;

new_title – заголовок инструментальной панели; пользователь его видит, когда панель показывается в виде вспомогательного окна;

w – ширина панели, измеряется количеством кнопок;

x, y – координаты верхнего левого угла панели в "бумажных" единицах; unit_name – имя "бумажной" единицы (например, "in" – дюйм, “cm” – сантиметр).

row, column – задает положение инструментальной панели, когда она находится в состоянии строки инструментов (docked) (например, 0, 0 задает расположение строки инструментов, прижатой к левому краю, и самой верхней строкой, а 0, 1 – расположение второй строкой сверху).

Каждый параметр button_definition является либо ключевым словом Separator, либо группой предложений следующего синтаксиса:

{ PushButton | ToggleButton | ToolButton }

Calling { procedure | menu_code | OLE methodname | DDE server , topic } [ ID button_id ]

[ Icon n [ File file_spec ] ] [ Cursor n [ File file_spec ] ] [ DrawMode dm_code ]

[ HelpMsg msg ]

[ ModifierKeys { On | Off } ] [ { Enable | Disable } ]

[ { Check | Uncheck } ]

procedure – имя процедуры-обработчика, вызываемой при нажатии на кнопку.

menu_code – стандартный в MapInfo командный код из файла MENU.DEF (например, M_FILE_OPEN); MapInfo начнет выполнение соответствующей команды при нажатии на кнопку.

14

Справочник MapBasic

Оператор Alter ButtonPad

methodname – строковая величина, задающая имя метода OLE. Синтаксис смотрите в описании оператора Create ButtonPad.

server, topic – строковая величина, задающая сервер DDE-связи и имя раздела (topic). Синтаксис смотрите в описании оператора Create ButtonPad.

button_id – назначает уникальный номер для кнопки. В дальнейшем этот номер можно использовать как: число, используемое при вызове Справки (Tag in Help); как идентификатор кнопки в ее процедуре-обработчике, когда один и тот же обработчик вызывают несколько кнопок; как параметр в операторе Alter Button.

Предложение Icon n задает пиктограмму, которая будет на кнопке. Здесь n может быть одним из специальных кодов файла ICONS.DEF (например, MI_ICON_RULER). Подпредложение File file_spec задает файл ресурсов изображений; в этом случае параметр n должен быть целочисленным идентификатором одного из ресурсов файла file_spec.

Предложение Cursor n задает картинку указателя, которая появится после выбора кнопки. Здесь n может быть одним из специальных кодов из файла ICONS.DEF (например, MI_CURSOR_ARROW). Это предложение может входить только в описание кнопки инструмента (тип ToolButtons). Подпредложение File file_spec задает имя файла ресурсов изображений; в этом случае параметр n должен быть целочисленным идентификатором одного из ресурсов файла file_spec.

Предложение DrawMode dm_code задает возможность инструмента рисовать (использование возможности передвигать мышку с нажатой клавишей) или только указывать (использование только возможности нажимать на клавишу мышки), при этом параметр dm_code должен быть одним из специальных кодов из файла ICONS.DEF (например, DM_CUSTOM_LINE). Это предложение может входить в описание кнопки инструмента (тип ToolButtons).

msg – строковая величина, задает текст подсказки, появляющейся в строке сообщений при указании на кнопку, а также может задавать текст для плавающей подсказки ToolTip. Первая часть строки msg используется строкой сообщений. Если величина msg включает в себя литеры \n, то текст, следующий за ними, используется подсказкой ToolTip.

Предложение ModifierKeys управляет использованием клавиш SHIFT и CTRL в режиме рисования, сопровождающемся прорисовкой образа объекта ("rubber-band"), инструментом кнопки типа Tool Button. По умолчанию применяется режим Off, не использующий клавиши SHIFT и CTRL.

Описание:

Оператор Alter ButtonPad используется для изменения состояния отображения на экране инструментальных панелей и их изменения. Более подробная информации об инструментальных панелях содержится в 6 главе Руководства пользователя MapBasic.

Для того, чтобы показать панель, в операторе используется ключевое слово Show; для того, чтобы ее скрыть, – ключевое слово Hide. Пользователь может показывать и убирать с экрана инструментальные панели с помощью диалога команды НАСТРОЙКА > ИНСТРУМЕНТАЛЬНЫЕ ПАНЕЛИ.

Ключевые слова Fixed и Float задают состояние панели, в котором она показывается на экране: закрепленной к верхнему краю окна или плавающей в виде вспомогательного окна.

Предложение Position задает расположение панели на экране, если она находится в плавающем состоянии. Предложение ToolbarPosition задает расположение панели, приклепленной к верхнему

Справочник MapBasic

15

Оператор Alter ButtonPad

краю рабочего окна.

С помощью ключевого слова Destroy Вы можете убрать панель насовсем, то есть имя этой панели больше не будет отображаться в списке диалога команды НАСТРОЙКА > ИНСТРУМЕНТАЛЬНЫЕ ПАНЕЛИ.

Оператор Alter ButtonPad может добавлять кнопки в инструментальные панели Операции и Пенал. Существуют три типа кнопок, которые можно добавить оператором:

тип PushButton – кнопка, нажатие на которую приводит к определенному действию, например, к открытию диалога;

тип ToggleButton – кнопка с фиксированным выбором, то есть после нажатия на кнопку она остается в состоянии выбора (на панели она "утоплена"), для отмены выбора надо нажать на нее снова;

тип ToolButton – кнопка инструмента, который пользователь может использовать только в окне Карты или Отчета.

Если Вы создаете кнопку с ключом Disable, новая кнопка будет недоступна для выбора (недоступная кнопка закрашивается серым). Доступной кнопку можно сделать следующим оператором Alter Button. Однако, если обработчиком (handler) кнопки определена стандартная в MapInfo команда, MapInfo автоматически изменит доступность кнопки в зависимости от возможности выполнения этой команды.

Если Вы создаете кнопку типа ToolButton или типа ToggleButton с ключом Check, то в начале работы с панелью кнопка уже "утоплена".

Если пользователь нажал на кнопку типа ToolButton, MapInfo автоматически вызывает соответствующий обработчик инструмента, который будет действовать до тех пор, пока пользователь не отменит его (например, клавишей ESC). В процедуре обработчика может быть использована функция CommandInfo(_) для определения места, на которое пользователь указал мышкой. Если две или более инструментальные кнопки вызывают один обработчик, то функция CommandInfo(_) поможет Вам определить идентификатор кнопки, вызвавший его.

Встроенные картинки для кнопок и указателя мышки

Предложение Icon определяет пиктограмму, которую пользователь увидит на кнопке. Если опущено подпредложение File, то параметр n должен быть одним из кодов, имена которых определены в файле ICONS.DEF (например, MI_ICON_RULER).

Совет: MapInfo имеет много встроенных иконок для кнопок, не являющихся частью нормального пользовательского интерфейса. Просмотреть эти иконки Вы можете, запустив программу ICONDEMO.MBX. Эта программа позволяет просмотреть иконки и скопировать код иконки в почтовый ящик Windows (clipboard) для дальнейшего использования в Вашей программе.

В Windows подпредложение File file_spec ссылается на DLL-файл, который содержит ресурсы растровых изображений, а параметр n в предложении Icon является идентификатором ID одного из них. Более подробно создание новых кнопок в Windows описано в 11 главе Руководства пользователя MapBasic.

Для кнопок типа ToolButton Вы также можете определить картинку, которую примет указатель мышки в то время, пока активен инструмент, вызванный этой кнопкой. Имена возможных кодов для этого определены в файле ICONS.DEF (например, MI_CURSOR_CROSSHAIR или MI_CURSOR_ARROW).

16

Справочник MapBasic

Оператор Alter ButtonPad

Правила использования собственных ресурсов для указателя в предложении Cursor такие же, как при определении пиктограммы кнопки в предложении Icon. За тем исключением, что файл стандартных кодов для указателя в системе Macintosh называется CURS.

Режимы рисования

Определение ToolButton может включать предложение DrawMode, которое задает возможность указывать, перемещая инструмент (например, рисование линии) или только одним нажатием на клавишу мыши (например, рисование точечного объекта). В следующей таблице перечислены возможные режимы рисования. Имена для режимных кодов определены в файле ICONS.DEF.

Значения dm_code

 

Описание режима

DM_CUSTOM_POINT

 

Инструмент может только указывать, а не рисовать.

 

DM_CUSTOM_LINE

 

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

 

 

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

 

 

нажата клавиша мышки.

DM_CUSTOM_RECT

 

При рисовании инструментом указатель растягивает

 

 

прямоугольник, закрепленный противоположным по диагонали

 

 

углом в точке, в которой была нажата клавиша мышки.

DM_CUSTOM_CIRCLE

 

При рисовании указатель растягивает окружность.

DM_CUSTOM_ELLIPSE

 

При рисовании инструментом указатель растягивает эллипс. Если

 

 

добавлено предложение ModifierKeys, то при нажатой клавише

 

 

SHIFT будет растягиваться окружность.

DM_CUSTOM_POLYGON

 

Рисует многоугольник (полигон). Чтобы узнать, какой объект был

 

 

нарисован пользователем, надо вызвать функцию: Command

 

 

Info(CMD_INFO_CUSTOM_OBJ).

DM_CUSTOM_POLYLINE

 

Рисует ломаную (полилинию). Чтобы узнать, какой объект был

 

 

нарисован пользователем, надо вызвать функцию: Command

 

 

Info(CMD_INFO_CUSTOM_OBJ).

Все режимы рисования, исключая режим DM_CUSTOM_POINT, поддерживают режим автопрокрутки, который позволяет автоматически перемещать окно Карты или Отчета при операциях выбора и рисования с участием мыши. Отключить автопрокрутку можно оператором Set

Window.

Замечание: Переключение автопрокрутки не доступно пользователю MapInfo. Его можно переключать только из приложения MapBasic. Если создаваемый инструмент имеет следующее предложение:

Calling M_TOOLS_SEARCH_POLYGON

то инструмент может рисовать многоугольник. Когда пользователь дважды укажет мышкой для закрытия полигона, MapInfo выбирает все объекты (с доступных слоев Карты), попавшие в многоугольник. Многоугольник не сохраняется.

Пример 1:

Следующие операторы показывают инструментальную панель "Операции" и скрывают панель

Справочник MapBasic

17

Оператор Alter ButtonPad

"Пенал":

Alter ButtonPad "Операции" Show

Alter ButtonPad "Пенал" Hide

Пример 2:

Следующий пример прикрепляет панель "Операции" к верхнему краю рабочего окна:

Alter ButtonPad ”Операции” Fixed ToolbarPosition(0,0)

Пример 3:

Теперь переведем панель "Операции" в плавающее состояние и поместим ее на расстоянии полдюйма от верхнего и левого краев экрана.

Alter ButtonPad ”Операции” Float Position(0.5,0.5) Units ”in”

Пример 4:

Прикладная программа из стандартной поставки SCALEBAR содержит оператор Alter ButtonPad, который добавляет кнопку типа ToolButton на инструментальную панель "Программы" (идентифицирумая “ID 3”).

Alter ButtonPad ID 3

Add

Separator

ToolButton

Icon MI_ICON_CROSSHAIR

HelpMsg "Рисует масштабную линейку в окне Карты\nМасштабная линейка" Cursor MI_CURSOR_CROSSHAIR

DrawMode DM_CUSTOM_POINT

Calling custom_tool_routine

Show

Заметьте, что ключевое слово Separator вставляет пустое пространство между последней кнопкой панели "Программы" и новой "+" кнопкой.

Использование ID-номеров вместо названий панелей позволяет создавать приложения, не зависящие от языковой версии MapInfo.

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

Alter Button, ButtonPadInfo(_), Create ButtonPad

18

Справочник MapBasic

Оператор Alter Cartographic Frame

Оператор Alter Cartographic Frame

Назначение:

Оператор Alter Cartographic Frame изменяет положение, заголовок, подзаголовок, рамку и стиль существующего раздела легенды, созданной оператором Create Cartographic Legend. (Для изменения размера, позиции или заголовка окна легенды, используйте оператор Set Window.)

Синтаксис:

Alter Cartographic Frame

[ Window legend_window_id ] Id { frame_id }

[ Position ( x , y ) [ Units paper_units ] ] [ Title [ frame_title ] [ Font... ] ]

[ SubTitle [ frame_subtitle ] [ Font... ] ] [ Border Pen... ]

[ Style [ Font... ]

[ ID { id } Text { style_name } ] [Line Pen... | Region Pen... Brush...

| Symbol Symbol... ] ] [ , ... ]

legend_window_id - это челочисленный идентификатор окна, который Вы можете получить при вызове функций FrontWindow() и WindowId( ).

frame_id - это индекс ID раздела легенды. Вы не можете использовать здесь имя слоя. Например, три раздела легенды могут иметь индексы ID 1, 2 и 3.

frame_title - это строковая величина, определяющая заголовок раздела легенды. frame_subtitle - это строковая величина, определяющая подзаголовок раздела легенды.

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

style_name - это строковая величина, которая отображает следующий за каждым символ для раздела с указанным индексом ID. Символ ”#” будет замещаться именем слоя. Символ % будет замещаться текстом “Линия”, “Точка, “Полигон”, в соответствии с типом символа. Например, “% of #” будет заменено на “Region of States” для раздела легенды, соответствующей слою states.tab.

Описание:

Если предложение Window не определено, MapInfo будет использовать самое верхнее окно легенды. Предложение Position контролируетположение раздела в окне легенды. Верхний левый угол окна легенды имеет позицию 0, 0. Положение измеряется в “бумажных” единицах, таких как “in” (дюймы) или “cm” (сантиметры). MapBasic имеет по умолчанию установку в дюймах; программа MapBasic может поменять единицы, используя оператор Set Paper Units. Оператор Alter Cartographic Legend может изменить единицы измерения с помощью подпредложения Units в предложении Position. Предложения Title и SubTitle вводят новый текст, новый шрифт или и то и другое.

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

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

Create Cartographic Legend, Set Cartographic Legend, Add Cartographic Frame, Remove Carto graphic Frame

Справочник MapBasic

19

Оператор Alter Control

Оператор Alter Control

Назначение:

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

Синтаксис:

Alter Control id_num

[ Title { title | From Variable array_name } ] [ Value value ]

[ { Enable | Disable } ] [ { Show | Hide } ]

[ Active ]

где

id_num – целочисленный идентификатор одного из элементов активного диалога в активном диалоге;

title – новый заголовок для элемента диалога, строковая величина;

array_name – имя или массив величин, используемый для элементов типа ListBox, MultiListBox,

RadioGroup и PopupMenu;

value – новое значение для элемента диалога.

Предупреждение:

Вы не можете использовать этот оператор в окне MapBasic.

Описание:

Оператор Alter Control изменяет атрибуты элемента активного диалога, окно которого было открыто оператором Dialog. Применение оператора возможно только пока диалоговое окно открыто, т. е. в специальной подпрограмме, называемой процедурой-обработчиком элемента диалога, вызов которой учитывается при создании диалога. Если на экране находятся два или более диалоговых окон, то оператор воздействует на активное окно, которое лежит поверх остальных.

Параметр id_num определяет элемент диалога, который будет изменяться. Значение параметра соответствует значению одноименного параметра в операторе Dialog при создании элемента (предложение ID id_num).

Изменение состояния и атрибутов элемента диалога производится при помощи предложений Title, Value, Enable/Disable, Hide/Show, Active. Оператор может использовать либо одно из этих предложений, либо одновременно несколько, либо все. То есть одновременно оператор Alter Control может изменить имя, значение и режим доступа элемента диалога.

Однако, не все атрибуты могут меняться для каждого типа элемента диалога. Например, для элемента StaticText не может быть изменен режим доступа, или присвоено значение, так как этот элемент таких атрибутов не имеет. Элемент типа Button, напротив, эти атрибуты имеет, поэтому они могут меняться оператором Alter Control.

Предложение Title назначает текст для большинства элементов (исключение составляют элементы типа Picker и EditText; текст элемента EditText определяется значением через предложение Value). Если Вы меняете текстовый атрибут для элементов типа ListBox, MultiListBox, RadioGroup или PopupMenu, предложение Title From Variable может читать новое содержимое элемента из строкового массива переменных.

20

Справочник MapBasic

Оператор Alter Control

Ключевое слово Active используется только для элемента EditText. Оператор Alter Control... Active помещает курсор в текстовое окошко элемента.

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

Для полной отмены выбора в списке элемента MultiListBox определите значение элемента (параметр value) равным нулю. Для того, чтобы добавить к текущему выбору в списке элемента Mul tiListBox еще одну строку, выполните оператор Alter Control с положительным значением, соответствующим номеру строки в списке.

Пример:

Следующая программа создает диалог с двумя флажками и кнопками "OK" и "Отмена" ("Cancel"). Когда диалог открывается, кнопка "OK" не активна (окрашена серым). Кнопка становится доступной пользователю, когда он установит один или оба флажка.

Include "mapbasic.def"

Declare Sub Main

Declare Sub checker

Sub Main

Dim browse_it, map_it As Logical

Dialog

Title "Показать файл"

Control CheckBox

Title "Показать в окне Списка"

Value 0

Calling checker

ID 1

Into browse_it

Control CheckBox

Title "Показать в окне Карты"

Value 0

Calling checker

ID 2

Into map_it

Control CancelButton

Control OKButton

ID 3

Disable

If CommandInfo(CMD_INFO_DLG_OK) Then

'

' ... действие при нажатии кнопки "OK"...

'

End If

End Sub

Sub checker

'Если хотя бы один из флажков установлен,

'кнопка "OK" становится активной; иначе она неактивна.

Справочник MapBasic

21

Оператор Alter Control

If ReadControlValue(1) Or ReadControlValue(2) Then

Alter Control 3 Enable

Else

Alter Control 3 Disable

End If

End Sub

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

Dialog, Dialog Preserve, ReadControlValue( )

22

Справочник MapBasic

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