Domino 9 und frühere Versionen > ND9: Entwicklung

Remote Binding

<< < (3/4) > >>

jBubbleBoy:
Hä? QueryClose wird immer ausgeführt und ein uiDoc gibt es auch immer, egal ob ein Dokument geöffnet oder erstellt wird.
Prüf das bitte noch einmal.

Jürgen Schomann:
Ich glaube wir verstehen uns nicht richtig.
Also ich meine folgendes:

Maske Code:

Sub Onload(Source As Notesuidocument)
   Dim uidoc As NotesUIDocument
   Set uidoc = Source
End Sub


Ansicht Code:

(Globals)
(Declarations)
Dim obTimer As NotesTimer

Sub SetFocus(Source As NotesUIDocument, Continue As Variant)
   If Source.IsNewDoc Then Exit Sub
   Set obTimer = New NotesTimer(1)
   obTimer.Enabled = True
   On Event Alarm From obTimer Call SetFocus2
End Sub

Sub SetFocus2(Source As NotesTimer)
   Dim session As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim doc As NotesDocument
   obTimer.Enabled = False
   Set doc = session.CurrentDatabase.GetDocumentByUNID(session.GetEnvironmentString("FOCUSUNID"))
   Call ws.CurrentView.SelectDocument(doc)
End Sub

Schaltfläche zum Erstellen eines Dokuments
Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = ws.ComposeDocument("", "", "faM1")
   Call session.SetEnvironmentVar("FOCUSUNID", uidoc.Document.UniversalID)
   On Event Queryclose From uidoc Call SetFocus
End Sub

Schaltfäche zum Bearbeiten eines Dokuments
Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Set uidoc = ws.EditDocument(True)
   Call session.SetEnvironmentVar("FOCUSUNID", uidoc.Document.UniversalID)
   On Event Queryclose From uidoc Call SetFocus
End Sub

Die funktioniert fürs Erstellen und Bearbeiten.
Wenn ich aber zum Bearbeiten eines Dokuments statt über die Schaltfläche über das Notes Symbol oder Doppelkick das Dokument öffne und bearbeite,
habe ich ja kein 'On Event ...' aufgesetzt und damit wird beim Schließen auch nicht SetFocus bzw. SetFocus2 durchlaufen.

Oder habe ich noch etwas falsch verstanden?

Gruß Jürgen

jBubbleBoy:
Das OnLoad Ereignis kommt aus der Web-Welt und wird, soweit ich das mitbekomme habe, nicht immer ausgeführt. Nutze selber nur das Query- oder PostOpen Ereignis.
In diesem Fall kannst du aber darauf verzichten, da QueryClose dir den Source/uiDoc als Parameter bereitstellt.
Wenn du dir eigene Ereignisse, wie z.B.  "On Event Queryclose From .. " erstellst, dann über das PostOpen Ereignis der Maske, denn das wird bei jeder Aufrufvariante initiiert.

jBubbleBoy:
Warte mal, sehe gerade das dein OnLoad Ereignis bei deinem Code keinen Sinn macht.
Du musst nur das QueryClose, direkt in der Maske, mit diesen beiden Zeilen versehen:

--- Code: ---Dim session As New NotesSession
Call session.SetEnvironmentVar("FOCUSUNID", source.Document.UniversalID)

--- Ende Code ---
Eine Teilmaske sollte genauso gut funktionieren.

jBubbleBoy:
Und zum Schluss noch den NotesTimer im PostOpen der Ansicht initiieren und nicht in der Aktion, dann passt alles.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln