активность инструмента

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
Аватара пользователя
Шаки
Активный участник
Сообщения: 187
Зарегистрирован: 02 июл 2008, 11:57
Репутация: 1
Контактная информация:

активность инструмента

Сообщение Шаки » 06 окт 2008, 15:53

Подскажите пожалуйста, как в UIControl управлять активностью инструментов (UIToolControl),т.е. при каком-то событии делать инструмент не активным.
В справке нашла функцию "Private Function object_Enabled() As Boolean", но я как то криво с ней работаю, что она у меня не работает (сори за тавтологию) :(

Lforj
Новоприбывший
Сообщения: 4
Зарегистрирован: 11 окт 2008, 19:12
Репутация: 0

Re: активность инструмента

Сообщение Lforj » 11 окт 2008, 21:45

На самом деле, что бы на вопросы быстрее приходили ответы их надо ставить немного конкретнее. Не активным - в смысле «сереньким» или в смысле деактивировать инструмент (отщелкивать)?

Если делать «сереньким/не сереньким» =) это та функция, которую вы нашли

Код: Выделить всё

Private Function object_Enabled() As Boolean
Если «щелкнуто/отщелкнуто», то:

Код: Выделить всё

Private Function object_Deactivate() As Boolean
Есть определенные нюансы использования. Я так полагаю вам необходимо «делать инструмент не активным» для ваших макросов, о которых вы интересовались несколькими топиками ниже. Так вот в макросах, эффект «серения» не будет виден в режиме отладки (т.е. когда открыт VBA). Функции о которых я говорил, вызываются в момент, когда пользователь убирает фокус с инструмента (отщелкивает), или пытается его деактивировать. По умолчанию в теле функции изменяется свойства object_Enabled и object_Deactivate соответственно.

Код: Выделить всё

Private Function object_Deactivate() As Boolean
  object_Deactivate = True
End Function
Private Function object_Enabled() As Boolean
  object_Enabled = True
End Function
Для того что бы менять состояние инструментов в интересующий вас момент:
  • Объявить два флажка в пределах видимости класса
  • В теле функции свойствам object _Deactivate и object_Enabled присваивать состояние флажков (в макросах параметры этих функций доопереопределить нельзя, а свойства, которые они меняют нельзя изменять за пределами функций, для этого используем флажки)
  • В момент когда необходимо поменять состояние – меняем состояние флажка и вызываем соответствующую функцию

Код: Выделить всё

Public deactivateState as Boolean
Public enabledState as Boolean

‘бла-бла-бла

Private Function object_Deactivate() As Boolean
  object_Deactivate = deactivateState
End Function
Private Function object_Enabled() As Boolean
  object_Enabled = enabledState
End Function

‘бла-бла-бла

Private Sub MySub()
‘бла-бла-бла
if neobhodimo_deaktivirovat = true Then
  ‘если возникла необходимость снять фокус с инструмента
  deactivateState = True
  call object_Deactivate
End if
if neobhodimo_sdelat_serenkim = true Then
  ‘если возникла необходимость сделать инструмент «сереньким»
  enabledState = FALSE
  call object_Deactivate
End if
‘бла-бла-бла
End Sub
Я бы сделал так :)
Может показаться, что я ничего не делаю. Но на клеточном уровне я очень занят! =)

Аватара пользователя
Шаки
Активный участник
Сообщения: 187
Зарегистрирован: 02 июл 2008, 11:57
Репутация: 1
Контактная информация:

Re: активность инструмента

Сообщение Шаки » 12 окт 2008, 15:11

Спасибо :D
Последний раз редактировалось Шаки 12 окт 2008, 15:47, всего редактировалось 3 раза.

Lforj
Новоприбывший
Сообщения: 4
Зарегистрирован: 11 окт 2008, 19:12
Репутация: 0

Re: активность инструмента

Сообщение Lforj » 13 окт 2008, 00:43

Ну, что, получилось реализовать? =)
Может показаться, что я ничего не делаю. Но на клеточном уровне я очень занят! =)

Аватара пользователя
Шаки
Активный участник
Сообщения: 187
Зарегистрирован: 02 июл 2008, 11:57
Репутация: 1
Контактная информация:

Re: активность инструмента

Сообщение Шаки » 16 окт 2008, 14:41

Да всё получилось, я использовала твои инструкции, большое спасибо , Лёшичка!!!

Lforj
Новоприбывший
Сообщения: 4
Зарегистрирован: 11 окт 2008, 19:12
Репутация: 0

Re: активность инструмента

Сообщение Lforj » 16 окт 2008, 20:04

Ты знаешь, зайчик, незачто =)
Может показаться, что я ничего не делаю. Но на клеточном уровне я очень занят! =)

Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: Ahrefs [Bot] и 1 гость