Zadržanje uporabnika na strani z neshranjenimi spremembami
Ko uporabnik v WklNavBar izbere drug vnos, ga zadržite na strani, ki jo ureja, namesto da bi
izgubil spremembe ali bi se te neopazno shranile.
Zahteva WKL Forms Object Library 1.24 ali novejšo različico.
Pregled rešitve
BeforeNavigate se izvede, preden vrstica spremeni izbor; nastavitev Cancel ohrani trenutni
vnos in prepreči Navigate, zato stran ostane taka, kot je. Form.Dirty podobrazca strani pove,
ali ima prikazani zapis neshranjene spremembe.
Izvedba
Private Sub navMain_BeforeNavigate(ByVal Key As String, Cancel As Integer)
If PageDirty() Then
Select Case MsgBox("Ali želite shraniti spremembe?", vbYesNoCancel + vbQuestion)
Case vbYes: Cancel = Not SavePage()
Case vbNo: Me!sfPage.Form.Undo
Case Else: Cancel = True
End Select
End If
End Sub
Private Sub navMain_Navigate(ByVal Key As String)
Me!sfPage.SourceObject = "Form." & Key
End Sub
' A page showing a table or an unbound form has no unsaved record.
Private Function PageDirty() As Boolean
On Error Resume Next
PageDirty = Me!sfPage.Form.Dirty
End Function
' Saves the page's record; False when Access refused it (validation rule, required field).
Private Function SavePage() As Boolean
On Error Resume Next
Me!sfPage.Form.Dirty = False
SavePage = (Err.Number = 0)
End Function
Opombe
BeforeNavigatesprožijo le izbire uporabnika (klik, Enter, preslednica, UI Automation). NastavitevSelectedKeys kodo ne sproži ničesar, zato lahko koda označi vnos strani, ki jo je odprla sama.- Vrstica, vezana na tabelo za krmarjenje, sama vpraša, preden cilj s podobrazcem zamenja stran z neshranjenim zapisom, tako kot Access ob zapiranju spremenjenega načrta (
ConfirmUnsavedChanges, privzeto True); zgornja koda je namenjena vrstici, ki svoje strani prikazuje vNavigate. - Ko ima stran neshranjene spremembe, se izbira prekliče, stran in izbor pa ostaneta; po
Undoista izbira zamenja stran.
Sorodne teme
sl/wiki/msaccess/comctl/how-to/stay-on-a-page-with-unsaved-changes.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille