Russian version
English version
ОБ АЛЬЯНСЕ | НАШИ УСЛУГИ | КАТАЛОГ РЕШЕНИЙ | ИНФОРМАЦИОННЫЙ ЦЕНТР | СТАНЬТЕ СПОНСОРАМИ SILICON TAIGA | ISDEF | КНИГИ И CD | ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ | УПРАВЛЕНИЕ КАЧЕСТВОМ | РОССИЙСКИЕ ТЕХНОЛОГИИ | НАНОТЕХНОЛОГИИ | ЮРИДИЧЕСКАЯ ПОДДЕРЖКА | АНАЛИТИКА | КАРТА САЙТА | КОНТАКТЫ
 
Программное обеспечение
 
Для зарегистрированных пользователей
 
РАССЫЛКИ НОВОСТЕЙ
IT-Новости
Новости компаний
Российские технологии
Новости ВПК
Нанотехнологии
 
Поиск по статьям
 
RSS-лента
Подписаться
Средства разработки

Классы и объекты для начинающих. Часть 2

Всем приходилось сталкиваться с ситуаций, когда одно или несколько действий нуждается в многократном повторении. (Процедуры - подумал Штирлиц) Нет , не процедуры. Точнее встречаются ситуации, в которых процедуры неудобны. К примеру - вам хочется подкрасить поле ввода ярким цветом, но не забыть вернуть цвет на место, когда фокус перешел к другому полю ввода.

Или совершенно классический пример. Контрол никогда не знает, какой контрол до него имел фокус.

А это бывает необходимо. Выход то есть, он заложен в эвентно управляемую среду Windows - достаточно отследить событие и правильно на него отреагировать. Т.е. в первом примере вам надо добавить код перекрашивающий контрол в событие Got Focus и код возвращающий цвет обратно в событие Lost Focus. Во втором случае надо на событие Lost Focus запоминать какой контрол имел фокус в паблик переменной уровня модуля. Все просто, не так ли? Только лень прописывать код во все контролы. К тому же форма в которой десятка полтора полей ввода - вообще норма. А нередко их вдвое-втрое больше. Выход есть. Рассмотрите подробненько этот пример кода на Visual Basic.

Он состоит из класс модуля Class1 , обычного модуля и формы с кнопкой и четырьмя текстбоксами.

Форма:
Option Explicit
Private clsTextBox1 As New Class1
Private clsTextBox2 As New Class1
Private clsTextBox3 As New Class1
Private clsTextBox4 As New Class1
Private Sub Command1_Click()
MsgBox "Return Focus in Previos Control"
PrevControl.SetFocus
End Sub Private

Sub Form_Load()
Set clsTextBox1.TextBoxCtl = Text1
Set clsTextBox2.TextBoxCtl = Text2
Set clsTextBox3.TextBoxCtl = Text3
Set clsTextBox4.TextBoxCtl = Text4
End Sub

Модуль :

Public PrevControl as Control

Class Module

Option Explicit
Private WithEvents txt As TextBox
'Это означает что txt будет обрабатывать все эвенты тектсбокса.

Public Property Set TextBoxCtl(OutsideTextBox As TextBox)
Set txt = OutsideTextBox
End Property
Private Sub txt_GotFocus()
txt.BackColor = vbBlue
End Sub Private
Private Sub txt_LostFocus()
txt.BackColor = vbWhite
Set PrevControl = txt
End Sub Private
Sub txt_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
txt.ToolTipText = "X:" & X & " Y:" & Y
End Sub

Что мы имеем в результате: Все текстбоксы меняют цвет в соотвествии с поставленной задачей. Эвенты класса случаются После аналогичных эвентов самих контролов.(что открывает и другие возможности по управлению програмой)
Минусы - лишний расход ресурсов при создании обьектов. Правда при цене доллар на мегабайт памяти с этим можно смирится.


  Рекомендовать страницу   Обсудить материал Написать редактору  
  Распечатать страницу
 
  Дата публикации: 04.08.2006  

ОБ АЛЬЯНСЕ | НАШИ УСЛУГИ | КАТАЛОГ РЕШЕНИЙ | ИНФОРМАЦИОННЫЙ ЦЕНТР | СТАНЬТЕ СПОНСОРАМИ SILICON TAIGA | ISDEF | КНИГИ И CD | ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ | УПРАВЛЕНИЕ КАЧЕСТВОМ | РОССИЙСКИЕ ТЕХНОЛОГИИ | НАНОТЕХНОЛОГИИ | ЮРИДИЧЕСКАЯ ПОДДЕРЖКА | АНАЛИТИКА | КАРТА САЙТА | КОНТАКТЫ

Дизайн и поддержка: Silicon Taiga   Обратиться по техническим вопросам  
Rambler's Top100 Rambler's Top100