Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MB6REFRU.pdf
Скачиваний:
10
Добавлен:
13.02.2015
Размер:
3.83 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 Com4 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 – имя процедурыLобработчика, вызываемой при нажатии на кнопку.

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

14

Справочник MapBasic

Оператор Alter ButtonPad

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

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

button_id – назначает уникальный номер для кнопки. В дальнейшем этот номер можно использовать как: число, используемое при вызове Справки (Tag in Help); как идентификатор кнопки в ее процедуреLобработчике, когда один и тот же обработчик вызывают несколько кнопок; как параметр в операторе 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 в режиме рисования, сопровождающемся прорисовкой образа объекта ("rubberLband"), инструментом кнопки типа Tool4 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 имеет много встроенных иконок для кнопок, не являющихся частью нормального пользовательского интерфейса. Просмотреть эти иконки Вы можете, запустив программу ICONL DEMO.MBX. Эта программа позволяет просмотреть иконки и скопировать код иконки в почтовый ящик Windows (clipboard) для дальнейшего использования в Вашей программе.

В Windows подпредложение File file_spec ссылается на DLLLфайл, который содержит ресурсы растровых изображений, а параметр 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

 

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

 

 

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

 

 

Info(CMD_INFO_CUSTOM_OBJ).

DM_CUSTOM_POLYLINE

 

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

 

 

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

 

 

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 вставляет пустое пространство между последней кнопкой панели "Программы" и новой "+" кнопкой.

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

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

Alter Button, ButtonPadInfo(_), Create ButtonPad

18

Справочник MapBasic

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