Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Soneg
Зарегистрирован: 04.03.2010 Сообщения: 8
|
Добавлено: Пт Апр 02, 2010 12:34 am Заголовок сообщения: Кнопка ToggleButton |
|
|
Необходимо создать кнопку, которая делает видимым/скрывает определенный слой при нажатии/отжатии. Прототип стандартной кнопки "Показать/скрыть окно легенды". С показом проблемы нет, а вот при отжатии кнопки ничего не происходит, слой не скрывается. Что нужно дописать??? |
|
Вернуться к началу |
|
|
Arhara
Зарегистрирован: 18.02.2009 Сообщения: 400 Откуда: Moscow, RF
|
Добавлено: Пт Апр 02, 2010 2:20 am Заголовок сообщения: |
|
|
для начала - попробовать обновить окно карты. для остального ответиь на два вопроса:
1. если заменить команды в состояних кнопки на печать (команда print) любого сообщения, при нажатии на кнопку - выводяться оба сообщения.
2. если да, то какой командой отключаете слой? |
|
Вернуться к началу |
|
|
Soneg
Зарегистрирован: 04.03.2010 Сообщения: 8
|
Добавлено: Пт Апр 02, 2010 9:04 pm Заголовок сообщения: |
|
|
Ничего не понял |
|
Вернуться к началу |
|
|
Arhara
Зарегистрирован: 18.02.2009 Сообщения: 400 Откуда: Moscow, RF
|
Добавлено: Сб Апр 03, 2010 2:40 am Заголовок сообщения: |
|
|
Побробует с самого начала. Help к MapBasic'у видели?
Команда print.
Код: |
Print statement
Purpose
Prints a prompt or a status message in the Message window. You can issue this statement from the MapBasic Window in MapInfo Professional.
Syntax
Print message
message is a string expression.
|
вставьте Print "A" как обработчик события "вдавить кнопку"
Print "B" - обработчик "отлепить кнопку".
В окне Message выводится A и B? |
|
Вернуться к началу |
|
|
Soneg
Зарегистрирован: 04.03.2010 Сообщения: 8
|
Добавлено: Вс Апр 04, 2010 11:13 am Заголовок сообщения: |
|
|
Вот с чего надо было начать Какие обработчики событий отвечают за "вдавить" и "отжать"?
Сейчас код подпрограммы выглядит так:
Declare Sub B1
Sub B1
Set Map
Layer 1
Display Graphic
Label Line Arrow Position Below Font ("Arial Cyr",257,9,24672,16777215) Pen (1,2,0)
With Номер_отделения
Parallel On Auto On Overlap Off Duplicates On Offset 5
Visibility On
End Sub
И соответственно панель инструментов:
Create ButtonPad "Социальные объекты" As
ToggleButton
Icon MI_ICON_COMMUNICATION_10
Calling B1
Как я понимаю, у меня и в режиме "вдавить", и в режиме "отжать" происходит одна и та же операция - слой становится видимым. Как сделать так, чтобы в режиме "отжать" слой становился невидимым? Я догадываюсь, что дело в строке Visibility On... |
|
Вернуться к началу |
|
|
Arhara
Зарегистрирован: 18.02.2009 Сообщения: 400 Откуда: Moscow, RF
|
Добавлено: Пн Апр 05, 2010 6:11 pm Заголовок сообщения: |
|
|
я не вижу в синтаксисе команды, что бы в ней был вызов двух функций - всегда вызывается только одна.
Значит состояние кнопки надо хранить внутри самой функции и при каждом вызове менять на противоположное.
Код: |
Declare Sub B1
dim b1Status as Logical
Sub B1
if b1Status then
Set Map
Layer 1
Display Graphic
Label Line Arrow Position Below Font ("Arial Cyr",257,9,24672,16777215) Pen (1,2,0)
With Номер_отделения
Parallel On Auto On Overlap Off Duplicates On Offset 5
Visibility On
else
Set Map
Layer 1
Visibility Off
end if
b1Status=not b1Status
End Sub
|
|
|
Вернуться к началу |
|
|
Soneg
Зарегистрирован: 04.03.2010 Сообщения: 8
|
Добавлено: Вт Апр 06, 2010 10:35 pm Заголовок сообщения: |
|
|
Вот то, что нужно! Большое спасибо |
|
Вернуться к началу |
|
|
|