Um einen Reopen kommst du nicht herum, du kannst aber mit Evaluate + Formelsprache auf den Inhalt des Dokuments auf der Platte zugreifen.
Folgender Code im QueryModeChange kann das prüfen.
' Neues TempDoc erzeugen (es darf nicht das aktuelle übergeben werden, da sonst @GetDocField den falschen Wert liefert)
Dim tmpDoc As New NotesDocument(doc.getParentDatabase())
Call tmpDoc.Replaceitemvalue("UNID", doc.Universalid)
Dim v
v = Evaluate(|@GetDocField(UNID;"Letzte_Aenderung")|,tmpDoc)
if doc.Letzte_Aenderung(0) <> v(0) then
msgbox "Dokument wurde modifiziert. Bitte neu öffnen"
continue = false
end if
Du brauchst noch ein Feld "Letzte_Aenderung", welches beim Speichern auf Now gesetzt wird (ggf. funktioniert auch $Revisions)
Gruß
Roland