2013-04-30 2 views
3

Когда пользователь переключается между записями в подформе, я хочу, чтобы другое поле временно выделяло, чтобы привлечь внимание, чтобы предупредить пользователя о его изменении.MS Access VBA временно выделяет поле

я бы думать, что это будет работать:

функции
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

Private Sub Form_Current() 
    Form_frm_Codes.txtCodeToAdd = Me.Code.Value 
    Form_frm_Codes.txtCodeToAdd.BackColor = RGB(0, 0, 255) 
    Sleep (500) 
    Form_frm_Codes.txtCodeToAdd.BackColor = RGB(255, 255, 255) 
End Sub 

сна, как правило, чтобы приостановить программу на полсекунды, но я не вижу синее изменения imediately раньше.

Любые идеи или даже лучший способ достичь этого?

ответ

1

Вместо того, чтобы использовать API попытаться ниже кода

Private Sub Form_Current() 
    Form_frm_Codes.txtCodeToAdd = Me.Code.Value 
    Form_frm_Codes.txtCodeToAdd.BackColor = RGB(0, 0, 255) 
    delay 5 
    Form_frm_Codes.txtCodeToAdd.BackColor = RGB(255, 255, 255) 
End Sub 

Private Sub delay(seconds As Long) 
    Dim endTime As Date 
    endTime = DateAdd("s", seconds, Now()) 
    Do While Now() < endTime 
     DoEvents 
    Loop 
End Sub 

ИЛИ добавить DoEvents перед сном, чтобы обновить экран.

Private Sub Form_Current() 
    Form_frm_Codes.txtCodeToAdd = Me.Code.Value 
    Form_frm_Codes.txtCodeToAdd.BackColor = RGB(0, 0, 255) 
    DoEvents 
    Sleep (500) 
    Form_frm_Codes.txtCodeToAdd.BackColor = RGB(255, 255, 255) 
End Sub 
+0

Блестящий! Все эти годы я никогда не использовал DoEvents ... – Warren