Also, ich habe deinen Code eben mal ausprobiert:
Ich habe eine Script Library erstellt, die nur die Klasse ProUIView enthält und die Oberklasse ProUIMultiLanguage aus der Deklaration entfernt.
Ich habe die Sub queryOpenDocumentNotAllowed als Methode der Klasse implementiert.
Dann habe ich eine Ansicht erstellt, die die Script Library einbindet und im QueryOpen ein Objekt von ProUIView erstellt.
Bei mir funktioniert alles wie erwartet! (LN 6.5.4)
Eine Messagebox in der Sub queryOpenDocumentNotAllowed wird auch ausgegeben.
LN4ever:
Deine Erklärung kann ich so nicht nachvollziehen.
Während des Konstruktors ProUIView.New kann man auf die View-Aliase zugreifen und den Eventhandler für QueryOpenDocument installieren - oder eben nicht.
Tritt dann später ein QueryOpenDocument-Event auf, wird in dem Moment nachgesehen, ob ein Handler dafür registriert ist oder nicht. Wenn ja, wird er aufgerufen, wenn nicht, dann nicht.
Und da macht der Debugger - zumindest von der Theorie her - keinen Unterschied.
Patrick:
Um diese fest codierte Abfrage in deinem Konstruktor ProUIView.New zu vermeiden (beim späteren Umbenennen einer Ansicht ist nicht offensichtlich, dass es diese Abhängigkeit gibt!), könntest Du entweder eine Unterklasse von ProUIView erstellen, die immer das Öffnen des Dokuments verhindert, oder dem Konstruktor einen weiteren Parameter mitgeben, der in einer Objektvariablen gespeichert wird und im QueryOpenDocument-Handler das Continue beeinflusst.
Mein Favorit wäre wahrscheinlich die zweite Variante (vermeidet eine weitere Klasse):
Public Class ProUIView As ProUIMultiLanguage
Dim ProhibitDocOpening as Boolean
Public Sub New (Source As NotesUIView, Continue As Variant, ProhibitDocOpening as Boolean), ProUIMultiLanguage()
Me.ProhibitDocOpening = ProhibitDocOpening
'Define the Events
On Event QueryOpenDocument From Source Call queryOpenDocumentNotAllowed
End Sub
Public Sub queryOpenDocumentNotAllowed(Source As Notesuiview, Continue As Variant)
Continue = Not ProhibitDocOpening
End Sub
End Class
Im Normalfall
Set pView = New ProUIView (Source, Continue, False)
Bei den Ansichten, wo das Öffnen von Dokumenten verboten sein soll:
Set pView = New ProUIView (Source, Continue, True)
So steht in der Ansicht selber, welches Verhalten gewünscht wird - und nicht in einem zentralen Element völlig getrennt und nur über den View-Alias verbunden.
HTH
Thomas