Visual Basic 6. Руководство разработчика


         

Доработанный элемент управления - часть 6


Программа 16.19. Модифицированные процедуры свойства Mandatory

Public Property Get Mandatory() As ReqOpt

Mandatory = m_Mandatory

End Property

Public Property Let Mandatory(ByVal New_Mandatory As ReqOpt)

m_Mandatory = New Mandatory

If m Mandatory = Required Then

Text1.Backcolor = m_MandatoryColor

Else

Text1.Backcolor = m_def_LeaveFocusColor

End If

PropertyChanged "Mandatory"

End Property

Когда свойство Mandatory установлено в True, элемент управления автоматически устанавливает свойство цвета фона равным значению свойства MandatoryValue.

Тем самым обеспечивается тривиальный код, необходимый для правильного функционирования элемента управления. Теперь можно добавить специальный код, чтобы расширить возможности элемента управления

TextBox. Код, расширяющий возможности элемента управления TextBox, расположен в событии LostFocus объекта UserControl. Когда пользователь убирает фокус с элемента управления CTextBox, код проверяет содержимое элемента управления и свойство Mandatory. Если элемент управления пуст и свойство Mandatory равно True, то цвет фона элемента управления TextBox устанавливается равным значению свойства MandatoryColor.

Программа 16.20. Обработчик события LostFocus объекта UserControl

Private Sub Textl_LostFocus ()

If Len(Trim(Textl.Text)) = 0 And m_Mandatory = Required Then

Text1.BackColor = m_MandatoryColor

Else

           Text1.BackColor = LeaveFocusColor

End  If

End Sub

Примечание

Обратите внимание, что код не инициирует событие

LostFocus. Хотя поведение элемента управления, когда он теряет фокус, определяется кодом, все же можно еще написать обработчик события LostFocus. Можно

использовать событие LostFocus, потому что это событие не может быть вызвано непосредственно самим элементом управления. Оно вызывается контейнером элемента управления (т.е. формой), и нельзя инициировать это событие из кода элемента управления. Таким образом, если даже в коде элемента управления отсутствует оператор RaiseEvent LostFocus (), обработчик события LostFocus все же можно запрограммировать. То же верно и для события GotFocus, которое также вызывается контейнером, а не элементом управления.




Содержание  Назад  Вперед