Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Tode am 11.09.12 - 15:19:29

Titel: LotusScript- Objekte zwischen Maske und Teilmaske "sharen"
Beitrag von: Tode am 11.09.12 - 15:19:29
Ich würde gerne ein Objekt in einer Script- Library einbinden, das ich in einem Maskenevent setze und dann im Event einer eingebauten Teilmaske wieder auslesen kann...
Aber leider scheint das nicht zu funktionieren: Mit dem selben Use in Maske und Teilmaske bekomme ich jeweils eine "Instanz" der Script- Library mit eigenen Variablen zu bekommen...

Hintergrund ist folgender: Ich möchte in der Mailmaske neue Aktionen hinzufügen, die ich aber über eine Teilmaske einbinden will. Trotzdem sollen diese Aktionen Funktionen auf dem cMemoObject durchführen (Konkret: cMemoObject.InsertSignature).

In diesem speziellen Fall ist cMemoObject (kommt aus CoreEmailClasses) direkt in den globals der Maske deklariert... aber das könnte ich ja ändern, wenn es diese Möglichkeit gäbe...
Titel: Re: LotusScript- Objekte zwischen Maske und Teilmaske "sharen"
Beitrag von: Tode am 11.09.12 - 15:30:20
OK... habs selbst rausgefunden:
Wenn man in beiden (Maske und Teilmaske) die gleiche Library einbindet, und dann in einem von beiden eine Globale Variable aus der Library setzt, dann hat der andere Zugriff auf die gleiche Variable... Das funktioniert out of the box... habe wohl bei meinen Tests das Caching durch Designer / Client (mal wieder) vernachlässigt.
Titel: Re: LotusScript- Objekte zwischen Maske und Teilmaske "sharen"
Beitrag von: Peter Klett am 11.09.12 - 15:34:19
Bei "eigenen" Klassen weiß ich nicht, ob es da Probleme gibt, aber bei anderen Objekten nutze ich das.

In den Declarations einer (allgemeingültigen) Scriptbibliothek definiere ich die Objekte, z.B.

Dim konfigdb As NotesDatabase

Im PostOpen einer Teilmaske setze ich die dann

Set konfigdb = New NotesDatabase (server, dateiname)

und habe in jedem anderen Event, das die gleiche Bibliothek eingebunden hat, die konfigdb im Zugriff.

Das mache ich schon seit Notes 5 so und funktioniert auch unter 8.5.3 immer noch, wie gewünscht.

EDIT: Zu spät, bestätigt aber Deinen zweiten Post ;)
Titel: Re: LotusScript- Objekte zwischen Maske und Teilmaske "sharen"
Beitrag von: pram am 11.09.12 - 15:48:19
Die (vermutlich) große Library wird dann aber von jeder Teilmaske nochmals geladen, was sich negativ auf die Performance auswirken kann.

Tipp noch von mir:
Mach dir eine "Mini"-Library, welche nur einen Variant enthält:
Zitat
public sharedObject as variant
In deine Maske machst du einen Use auf diese Mini-Lib + auf die Lib(s) die deine Klasse/Code enthält.
Im initialize oder queryOpen der Maske machst du dann ein "set sharedObject = new mySharedClass(...)"

in den Aktionen in den Teilmasken bindest du dann nur die Mini-Lib ein und kannst über "sharedObject.xxx" auf die Properties/Funktionen von "mySharedClass" zugreifen (da sharedObject aber ein Variant sein muss, ist dies allerdings nicht typsicher, das ist der Nachteil den man sich dadurch erkauft)

Gruß
Roland
Titel: Re: LotusScript- Objekte zwischen Maske und Teilmaske "sharen"
Beitrag von: Tode am 11.09.12 - 16:03:34
Das ist ein guter Einwand @pram.

Grund für diese Konstrukt war, eine verhältnismässig "updatesichere" Modifikation der Mailschablone durchzuführen:
Ich wollte so viel wie möglich (am liebsten alles) was ich an Ergänzungen habe in die Teilmaske packen, und dann als einzige Änderung diese Teilmaske
einbinden...

Das funktioniert aber sowieso nicht zu 100 % (da ich auch das ein oder andere Feld anpasse), und deshalb werde ich diese Änderung im Use eben auch noch einbinden... Danke für den Tipp wegen der Performance...