Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как отследить изменение значения ? / 10 сообщений из 10, страница 1 из 1
26.08.2004, 16:38:53
    #32667436
Reznichenko Y.V.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить изменение значения ?
Подскажите, пожалуйста, как отследить изменение значения в текстовом поле, если и поле, и форма не связаны с набором данных ?
...
Рейтинг: 0 / 0
26.08.2004, 16:48:07
    #32667479
4d_monster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить изменение значения ?
Событие AfterUpdate для поля подойдёт?
...
Рейтинг: 0 / 0
26.08.2004, 17:04:59
    #32667537
Reznichenko Y.V.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить изменение значения ?
В принципе работает. Но если на форме несколько полей и изменение в любом из них нужно обработать, то как быть ? Прописывать AfterUpdate для каждого ?
...
Рейтинг: 0 / 0
26.08.2004, 17:13:14
    #32667562
Daf
Daf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить изменение значения ?
Можешь процедуру написать и вызывать её на обновлении каждого элемента.
Т.е. в у каждого элемента в событии AfterUpdate будет вызов этой процедуры.
...
Рейтинг: 0 / 0
26.08.2004, 17:45:58
    #32667637
Reznichenko Y.V.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить изменение значения ?
А никак нельзя ко всей коллекции элементов, или к форме, или к контейнеру применить проверку ?
...
Рейтинг: 0 / 0
26.08.2004, 22:47:13
    #32667939
lobodava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить изменение значения ?
Если хочешь через коллекцию, то можно с использованием классов.

Пишем один класс, с названием UControl:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Private WithEvents mctlTextBox As TextBox
Private mUCsParent As UControls

Public Property Set Parent(mUCsNewValue As UControls)
    Set mUCsParent = mUCsNewValue
End Property

Public Property Set Control(ctlNewValue As Control)
    Set mctlTextBox = ctlNewValue
    mctlTextBox.OnChange = "[Event Procedure]"
End Property

Private Sub mctlTextBox_Change()
    mUCsParent.RaiseEventDirty
End Sub

Пишем второй класс, с названием UControls:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private mcolUCs As Collection
Public Event Dirty()

Public Sub AddUControl(ctlControl As Control)
    Dim UC As New UControl
    Set UC.Parent = Me
    Set UC.Control = ctlControl
    mcolUCs.Add UC, ctlControl.Name 
End Sub

Public Sub RaiseEventDirty()
    RaiseEvent Dirty
End Sub

Пишем в форме:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private WithEvents UCs As UControls

Private Sub Form_Load()
    Set UCs = New UControls
    
    With UCs
        .AddUControl Me!tbo1
        .AddUControl Me!tbo2
        .AddUControl Me!tbo3
        .AddUControl Me!tbo4
        .AddUControl Me!tbo5
    End With
End Sub

Private Sub UCs_Dirty()
    MsgBox "OK!  We've got it!"
End Sub

Теперь все изменения в котролах можно отслеживать в одном месте. При изменении в любом контроле (из включенных в коллекцию) будет срабатывать событие UCs_Dirty().
Но это, конечно, сложный путь и показан в чисто познавательных целях :)

Можно просто написать функцию и, выделив, несколько контролов на форме, в редакторе свойств напротив After Update или On Change написать "=MyFunction()"

P.S. Если, вдруг, хотим состряпать непривязанную к данным форму, то вот здесь есть пример как можно использовать классы для создания "отвязанной" формы.
...
Рейтинг: 0 / 0
27.08.2004, 11:06:15
    #32668404
Reznichenko Y.V.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить изменение значения ?
Спасибо. Примерчик я уже видел, понравилось. Но опыта работы по созданию классов пока не приобрел. Будем разбираться.
...
Рейтинг: 0 / 0
27.08.2004, 15:27:16
    #32669171
lobodava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить изменение значения ?
Книга сия мне очень помогла разобраться с классами. Очень советую.
...
Рейтинг: 0 / 0
27.08.2004, 18:55:35
    #32669583
4d_monster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить изменение значения ?
есть событие AfterUpdate для всей формы
...
Рейтинг: 0 / 0
27.08.2004, 19:43:04
    #32669610
lobodava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как отследить изменение значения ?
Так ведь форма не связана с набором данных ...
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как отследить изменение значения ? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]