Псевдо всплывающее текстовое поле для обновления текстового поля нескольких форм - PullRequest
1 голос
/ 24 апреля 2019

У меня есть форма, содержащая контрольный список с несколькими текстовыми полями, txtObs1, txtObs2, txtObs3 и т. Д. При каждом событии всплывающего окна будет появляться всплывающее окно (фактически скрытое текстовое поле становится видимым) txtAddData. Я могу ввести данные в txtAddData и обновить текстовое поле с событием afterupdate, но я хочу использовать тот же txtAddData для обновления остальных текстовых полей в форме по одному.

Private Sub txtAddData_AfterUpdate()
Me.txtObs1 = Me.txtAddData
Me.txtObs1.SetFocus
Me.txtAddData = ""
Me.txtAddData.Visible = False
End Sub

Private Sub txtObs1_Click()
txtAddData.Visible = True
txtAddData.SetFocus
If Not IsNull(Me.txtObs1) Then
Me.txtAddData = Me.txtObs1
Else
Me.txtAddData = ""
End If
End Sub

1 Ответ

1 голос
/ 24 апреля 2019

Установить переменную для хранения имени текстового поля:

Option Compare Database
Option Explicit

Private CurrentTextbox As String


Private Sub txtAddData_AfterUpdate()

    Me.Controls(CurrentTextbox).Value = Me.txtAddData
    Me.Controls(CurrentTextbox).SetFocus
    Me.txtAddData = Null
    Me.txtAddData.Visible = False

End Sub


Private Sub txtObs1_Click()

    CurrentTextbox = "txtObs1"
    SetData

End Sub


Private Sub txtObs2_Click()

    CurrentTextbox = "txtObs2"
    SetData

End Sub


Private Sub SetData

    txtAddData.Visible = True
    txtAddData.SetFocus
    If Not IsNull(Me.Controls(CurrentTextbox).Value) Then
        Me.txtAddData = Me.Controls(CurrentTextbox).Value
    Else
        Me.txtAddData = Null
    End If

End Sub
...