Domino 9 und frühere Versionen > ND8: Entwicklung

selektieren des gerade erzeugten dokumentes in der view

<< < (5/8) > >>

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