Domino 9 und frühere Versionen > ND8: Entwicklung
selektieren des gerade erzeugten dokumentes in der view
Snowman:
Da bekomme ich beim speichern des Codes die Meldung: Event handler must be a LotusScript SUB or Function: Selectdocument.
Und wie selektiere ich dann in der View? Da brauche ich NotesUiView.SelectDocument(doc). Den UiView habe ich im Postopen. Im SelctDocument gibst Du das als Parameter nicht mit.
vg
stephan
Peter Klett:
Da ich remote binding auch noch nicht kannte, habe ich das einmal ausprobiert. Vorgehensweise:
In der Ansicht (Globals)
Declarations
Dim uiview As NotesUIView
Sub SelectDocument (Source As NotesUIDocument, Continue As Variant)
If Not Source Is Nothing Then
Call uiview.SelectDocument (Source.Document)
End If
End Sub
In der Schaltfläche zum Erstellen des Dokuments
Sub Click (Source As Button)
Dim workspace As New NotesUIWorkspace
Set uiview = workspace.CurrentView
Call workspace.ComposeDocument ("", "", "NameDerMaske")
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
On Event Queryclose From uidoc Call SelectDocument
End Sub
Es wird grundsätzlich alles ausgeführt, allerdings erscheint die Fehlermeldung Command is not available und das Dokument wird nicht markiert.
Habe in SelectDocument sowohl auf das Dokument Zugriff als auch auf die uiview (mit msgbox überprüft, da der Debugger bei dieser Konstruktion nicht mitspielt). Ich vermute, dass uiview.SelectDocument nur ausgeführt werden kann, wenn die Ansicht im Vordergrund ist. Das ist sie aber nicht, da das Dokument noch offen ist. Das Event Queryclose ist da zu früh. Habe es mit Terminate versucht, aber das ist gemäß Fehlermeldung kein Event. Und ein Postclose gibt es (noch) nicht.
Set uiview = workspace.CurrentView in SelectDocument ausgeführt, ergab Nothing, das ist ein weiterer Beleg dafür, dass SelectDocument aus dem Fokus des Dokuments und nicht der Ansicht ausgeführt wird.
Getestet habe ich unter 7.03, vielleicht funktioniert das unter einer neueren Version, deshalb habe ich die komplette Vorgehensweise aufgeschrieben.
Grischu:
Ich habe es unter 8.5.1 ausgeführt geht genau so wenig.
Allerdings habe ich danach noch etwas rum probiert und folgendes scheint zu funktionieren. Warum auch immer :)
In der Ansicht (Globals)
Declaration
Dim uiview As NotesUIView
Dim workspace As NotesUIWorkspace
Dim uiDatabase As NotesUIDatabase
Sub Initialize
Set workspace = New NotesUIWorkspace
Set uidb = workspace.CurrentDatabase
End Sub
Sub SelectDocument (Source As NotesUIDocument, Continue As Variant)
Print "SelectDocument"
If Not Source Is Nothing Then
Call uiDatabase.OpenView(uiview.ViewName,"",False)
On Error Resume Next
Call uiview.SelectDocument (Source.Document)
On Error Goto 0
End If
End Sub
In der Schaltfläche zum Erstellen des Dokuments
Sub Click (Source As Button)
Set uiview = workspace.CurrentView
Call workspace.ComposeDocument ("", "", "NameDerMaske")
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument
On Event Queryclose From uidoc Call SelectDocument
End Sub
Dies hat bei mir den Effekt dasd das neue Dokument in der View selektiert ist.
Peter Klett:
--- Zitat von: Grischu am 17.09.10 - 11:55:26 ---Warum auch immer :)
--- Ende Zitat ---
Sehr gut! Ist eigentlich logisch, denn Du änderst durch das Öffnen der Ansicht den Fokus, was genau das Problem löst, das in meinem Script war.
Hatte ähnliches probiert, allerdings über Schließen und wieder Öffnen der Ansicht im SelectDocument. Schließen hatte wunderbar funktioniert ...
Die Lösung halte ich für wirklich gut, da auch das Problem, das Bernhard ansprach (Nutzen der Ansicht, während das Dokument geöffnet ist) behoben ist, denn die Ansicht wird nun nicht geschlossen.
Hoffentlich ist Snowman darüber nicht so sehr ins Schwitzen gekommen, dass er nun geschmolzen ist ...
Snowman:
Nein, bin noch nicht zerschmolzen :)
Die neue Lösung klingt wirklich sehr gut.
Baue das nächste Woche um.
Danke Euch Allen!
vg
Stephan
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln