powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как отследить изменение значения ?
10 сообщений из 10, страница 1 из 1
Как отследить изменение значения ?
    #32667436
Reznichenko Y.V.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, пожалуйста, как отследить изменение значения в текстовом поле, если и поле, и форма не связаны с набором данных ?
...
Рейтинг: 0 / 0
Как отследить изменение значения ?
    #32667479
Фотография 4d_monster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Событие AfterUpdate для поля подойдёт?
...
Рейтинг: 0 / 0
Как отследить изменение значения ?
    #32667537
Reznichenko Y.V.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе работает. Но если на форме несколько полей и изменение в любом из них нужно обработать, то как быть ? Прописывать AfterUpdate для каждого ?
...
Рейтинг: 0 / 0
Как отследить изменение значения ?
    #32667562
Фотография Daf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можешь процедуру написать и вызывать её на обновлении каждого элемента.
Т.е. в у каждого элемента в событии AfterUpdate будет вызов этой процедуры.
...
Рейтинг: 0 / 0
Как отследить изменение значения ?
    #32667637
Reznichenko Y.V.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А никак нельзя ко всей коллекции элементов, или к форме, или к контейнеру применить проверку ?
...
Рейтинг: 0 / 0
Как отследить изменение значения ?
    #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
Как отследить изменение значения ?
    #32668404
Reznichenko Y.V.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Примерчик я уже видел, понравилось. Но опыта работы по созданию классов пока не приобрел. Будем разбираться.
...
Рейтинг: 0 / 0
Как отследить изменение значения ?
    #32669171
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Книга сия мне очень помогла разобраться с классами. Очень советую.
...
Рейтинг: 0 / 0
Как отследить изменение значения ?
    #32669583
Фотография 4d_monster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть событие AfterUpdate для всей формы
...
Рейтинг: 0 / 0
Как отследить изменение значения ?
    #32669610
lobodava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так ведь форма не связана с набором данных ...
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как отследить изменение значения ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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