Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Andreas Huhn am 21.11.05 - 08:57:42
-
Guten Morgen allerseits,
Dokument2 (Child) schreibt per Code (LotusScript) Werte in Felder von Dokument1 (Parent). Dadurch ändern sie für grafische Elemente (im konkreten Fall eingefügte Bilder) die HideWhen Bedingungen.
Wenn Dokument2 dann geschlossen und Dokument1 wieder angezeigt wird dann werden die Elemente erst dann angezeigt / ausgeblendet wenn ich an eine Stelle innerhalb des Dokuments klicke / doppelklicke.
In den Maskeneigenschaften von Dokument1 ist "Felder automatisch aktualsieren" aktiviert.
Über LS soll ja so ziemlich alles möglich sein.... wie kann ich ein 'Refresh' an ein Dokument senden um die Überprüfung der HideWhen Bedingungen anzustoßen?
Es gibt ja die Klasse NotesUIDocument mit der Methode Refresh, aber mein Parent-Objekt hat diese Methode nicht.
Viele Grüße,
Andreas
-
Dann würde ich mal vermuten, das dein Parent Document als NotesDocument vorliegt und nicht als NotesUIDocument.
Mfg
Sebastian
-
NotesUIWorkspace.ReloadWindow
-
Grüß dich Sebastian,
du vermutest richtig. Aber wenn ich es als UIDoc um deklariere meldet der Code schon beim speichern Fehler, weil ich anscheinend im Verlauf des Programms Methoden nutze die UIDoc nicht hat.
Deshalb hätte ich versucht mir ein neues Objekt zu erstellen, aber da weiß ich nicht wie ich an das Parent-Handle heran komme.
Sub Postsave(Source As Notesuidocument)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim response As NotesDocument
Dim parent As NotesDocument
Dim parentUI As NotesUIDocument
'...set value of response...
Set db = session.CurrentDatabase
Set response = source.Document
Set parent = db.GetDocumentByUNID ( response.ParentDocumentUNID )
Set parentUI =
If parent.BStatus_1(0) = "1"
Call parent.Save(True , False)
'...
End Sub
-
Um den Handle auf das UIDokument zu bekommen kannst Du nur ein uiWorkspace.editDocument versuchen.
-
Hallo auch Thorsten und Urs,
NotesUIWorkspace.ReloadWindow bringt das Fenster leider nicht dazu die Elemente vor dem obligatorischen Klick ins Doc zu aktiualisieren.
Call workspace.EditDocument(, parent , , ,True) öffnet mit den Parent noch ein zweites Mal in einem neuen Fenster.
Nur so eine Idee:
Ein Druck auf F9 aktualisiert das Dokument auch. Wär es vielleicht ein Weg mittels SendKeys ein F9 gezielt an ein Fenster zu schicken?
-
Der Aufruf:
Call workspace.EditDocument(, parent , , , True ,False)
sollte eigentlich das machen was ich möchte. Der letzte Parameter bestimmt ob eine neue Instanz (des zweiten Parameters) erstellt werden soll. In der DesignerHelp steht daß der Focus auf eine bereits existierende Instanz gesetzt wird, falls diese vorhanden ist.
Da sich bei mir ein neues Fenster aufmacht scheint Notes zu glauben daß noch keine offen ist.
Aber der Parameter Parent enthält das Dokument, weil ich die gleiche Objektvariable ja erfolgreich dazu benutze Feldwerte im Doc zu verändern.
Was mache ich falsch? Könnt ihr mir helfen?
Dim session As New NotesSession
Dim db As NotesDatabase
Dim response As NotesDocument
Dim parent As NotesDocument
Set db = session.CurrentDatabase
Set response = source.Document
Set parent = db.GetDocumentByUNID ( response.ParentDocumentUNID )
....
Call workspace.EditDocument(, parent , , , True ,False)