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

Re: активность инструмента
Добавлено: 11 окт 2008, 21:45
Lforj
На самом деле, что бы на вопросы быстрее приходили ответы их надо ставить немного конкретнее. Не активным - в смысле «сереньким» или в смысле деактивировать инструмент (отщелкивать)?
Если делать «сереньким/не сереньким» =) это та функция, которую вы нашли
Код: Выделить всё
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
Я бы сделал так

Re: активность инструмента
Добавлено: 12 окт 2008, 15:11
Шаки
Спасибо

Re: активность инструмента
Добавлено: 13 окт 2008, 00:43
Lforj
Ну, что, получилось реализовать? =)
Re: активность инструмента
Добавлено: 16 окт 2008, 14:41
Шаки
Да всё получилось, я использовала твои инструкции, большое спасибо , Лёшичка!!!
Re: активность инструмента
Добавлено: 16 окт 2008, 20:04
Lforj
Ты знаешь, зайчик, незачто =)