Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Andreas Huhn am 21.11.05 - 08:57:42

Titel: Dokument über Code aktualisieren
Beitrag 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
Titel: Re: Dokument über Code aktualisieren
Beitrag von: stitze am 21.11.05 - 09:55:38
Dann würde ich mal vermuten, das dein Parent Document als NotesDocument vorliegt und nicht als NotesUIDocument.

Mfg

Sebastian
Titel: Re: Dokument über Code aktualisieren
Beitrag von: Tode am 21.11.05 - 09:58:16
NotesUIWorkspace.ReloadWindow
Titel: Re: Dokument über Code aktualisieren
Beitrag von: Andreas Huhn am 21.11.05 - 10:02:10
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
Titel: Re: Dokument über Code aktualisieren
Beitrag von: umi am 21.11.05 - 10:05:42
Um den Handle auf das UIDokument zu bekommen kannst Du nur ein uiWorkspace.editDocument versuchen.
Titel: Re: Dokument über Code aktualisieren
Beitrag von: Andreas Huhn am 21.11.05 - 10:21:24
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?
Titel: Re: Dokument über Code aktualisieren
Beitrag von: Andreas Huhn am 21.11.05 - 13:15:23
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)