Autor Thema: Postopen und POstsave verknüpfen  (Gelesen 3649 mal)

Offline matze79

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 587
  • Ich liebe dieses Forum!
Postopen und POstsave verknüpfen
« am: 13.07.05 - 11:35:08 »
Hallo,

ich habe eine Klasse, die im Postopen und im Postsave initialisiert werden muss. Hintergrund: Ich lese in das Objekt einige Variablen des aktuellen Notesdokumentes ein. Diese sind aber erst nach dem ersten Speichern oder halt beim erneuten öffnen des Dokumentes existieren.

Frage1:
Kann ich die Initialiserung vie Postopen/Postsave auch über einen Button bewerkstelligen?

Frage2:
Ich habe im Postopen und im Postsave den gleichen Code. Kann ich den Code irgendwie automatisch vom Postopen in den POstsave übrnehmen, damit ich nicht an zwei Stellen den Code ändern muss?

Viele Grüße
matze

IBM Cerified System Administrator Lotus Notes and Domino 6/6.5
400 User, 10 Server, BES, Sametime und anderer Gimmicks

klaussal

  • Gast
Re: Postopen und POstsave verknüpfen
« Antwort #1 am: 13.07.05 - 11:39:39 »
zu Frage 2 : das könnte man wohl über eine Function in einer Script-Bibliothek machen.

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Postopen und POstsave verknüpfen
« Antwort #2 am: 13.07.05 - 11:53:32 »
Frage1:
Kann ich die Initialiserung vie Postopen/Postsave auch über einen Button bewerkstelligen?

Hi,

die Frage verstehe ich nicht so ganz.  ???


Was du aber machen kannst, die Klasse maskenglobal zu deklarieren und dann in PostOpen-Event zu initialisieren. Sie steht dann auch im PostSave-Event zur Verfügung.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Postopen und POstsave verknüpfen
« Antwort #3 am: 13.07.05 - 11:57:02 »
Ich verstehe Frage 1 so, ob man den Code auch anderweitig aufrufen kann. Die Lösung für beide Fragen ist, entweder den Code im globalen Teil der Maske als Function oder Sub zu definieren, dann lässt er sich in allen Events/Buttons/internen Aktionen aufrufen, oder (was eh empfehlenswert ist), den Code in eine Scriptlib auszulagern, die man dann in den globalen Options einbindet.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline matze79

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 587
  • Ich liebe dieses Forum!
Re: Postopen und POstsave verknüpfen
« Antwort #4 am: 14.07.05 - 11:38:05 »
Hallo,

vielen Dank für Antworten. Hier nochmal mein Problem:

Ich habe eine geschützte Klasse. Diese Klasse muss ich initialisieren um die Methoden zu nutzen. Bei der Initialisierung im Postopen/Postsave weise ich Variablen aus dem aktuellen Notesdokument zu:

Sub Postopen(Source As Notesuidocument)
...
Set myObject = New myClass(Source)
myObject.params("objectVar").Value = Source.FieldGetText( "notesVar" )
...
End Sub


-> Wenn ich nun den Code in den Postopen eintrage, dann wird "notesVar" nur beim Öffnen des Dokumentes gelesen. Eine Variablenänderung wirkt sich erst beim nochmaligen öffnen aus.
-> Wenn ich meinen Code nun in den Postsave kopiere, habe ich nach dem Speichern die geänderte Variable in meinem Objekt.


Problem 1: Ich habe den gleichen Code an zwei Stellen. Wie kan ich den Code genau auslagern? Gibt es sowas wie include(), wo ich beliebigen Code (Klassen als auch einzelne Codezeilen) einfach zur Laufzeit einfügen kann?

Problem 2. Kann ich die Variable auch in einem Button zuweisen?


Viele Grüße
matze
IBM Cerified System Administrator Lotus Notes and Domino 6/6.5
400 User, 10 Server, BES, Sametime und anderer Gimmicks

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Postopen und POstsave verknüpfen
« Antwort #5 am: 14.07.05 - 11:57:55 »
Wie Jens bereits erwähnt hat, haben Masken einen Bereich, wo man Globals definieren kann. Der scope dieser globals schliesst Schaltflächen/Aktionen in der Maske ein (bin mir zu 95% sicher). Du findest diesen Bereich im Objektbrowser der Maske ganz oben.
Dort kannst du natürlich auch Objekte (als global) deklarieren.

Include-mässig geht über ScriptLibraries.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: Postopen und POstsave verknüpfen
« Antwort #6 am: 14.07.05 - 12:37:29 »
also ich würde für Problem 1 folgende Lösung anstreben:

du hast in deiner Klasse ja das zugehörige UIDocument als Attribut - das entnehme ich dem Konstruktor
Set myObject = New myClass(Source)

in der Klasse registriere ich mich für beliebige Events diseses uidocuments, auf die ich reagieren möchte.

Also

Class MyClass

Private uidoc as NotesUIDocument

On Event Postopen From uidoc Call processPostOpen()
On Event Postsave From uidoc Call processPostSave()

Sub processPostOpen(parameter des PostOpenEvents)
Call init()
End sub


Sub processPostSave(parameter des PostSaveEvents)
Call init()
End sub

Sub init()
//füllen
End Sub

End Class

das heißt, für jedes interessante Event have ich eine Methode, die sich darum kümmert.

Für das Initialisieren selbst mache ich eine eigene Methode in der Klasse, die das uidocument ausliest und die Attribute befüllt

Naja, so oder zumindest so ähnlich würde ichs machen

Das Problem Nr2 verstehe ich nicht
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline matze79

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 587
  • Ich liebe dieses Forum!
Re: Postopen und POstsave verknüpfen
« Antwort #7 am: 14.07.05 - 16:10:52 »
Hallo,

kann ich via

%INCLUDE "c:\test.lss"

auch in der Datenbank befindliche Scripte einbinden? Wenn ja, wie lade ich meine Codebrocken in die DB?

Inhalt von c:\test.lss:
messagebox("TEST")


matze
IBM Cerified System Administrator Lotus Notes and Domino 6/6.5
400 User, 10 Server, BES, Sametime und anderer Gimmicks

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Postopen und POstsave verknüpfen
« Antwort #8 am: 14.07.05 - 16:23:50 »
Hi,

was meinst du mit: "in der Datenbank befindliche Scripte" ?

Mit %INCLUDE lassen sich nur Scripte einbinden, die als (Text) - Dateien vorliegen.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Postopen und POstsave verknüpfen
« Antwort #9 am: 14.07.05 - 16:44:35 »
Skriptbibliotheken in der Datenbank bindest du einfach so ein:
Code
 
Use "LibArchivierung"

im Bereich Options des jeweiligen Gestaltungselements.
Wobei LibArchivierung der Name der hier eingebundenen Skriptlib ist.

Dabei musst du ein bischen aufpassen in welcher Reihenfolge du kompilierst. Wenn du die da drin hast und die Skriptlib neu kompilierst hast du da teilweise alte Versionsstands der SkriptLib im Gestaltungselement. Ausserdem können zirkuläre Referenzen für Chaos sorgen. Wir haben letztens mal erlebt, dass bei Skriptlibs die sich mehrfach gegenseitig includeten die Ladezeit des betreffenden Codes dramatisch erhöhte.
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline matze79

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 587
  • Ich liebe dieses Forum!
Re: Postopen und POstsave verknüpfen
« Antwort #10 am: 14.07.05 - 17:34:50 »
Hallo,

> Use "LibArchivierung"

in einer Scriptlib kann nach meinen Tests nur eine Klasse stehen und nicht Prozedualer Code. Ich suche eine Möglichkeit einfach ein paar Codezeilen in mehreren Masken einzubinden.

matze
IBM Cerified System Administrator Lotus Notes and Domino 6/6.5
400 User, 10 Server, BES, Sametime und anderer Gimmicks

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Postopen und POstsave verknüpfen
« Antwort #11 am: 14.07.05 - 17:43:14 »
in einer Scriptlib kann nach meinen Tests nur eine Klasse stehen und nicht Prozedualer Code.

Das stimmt in keinster Weise. Es ist ohne weiteres möglich, beide Verfahren zu kombinieren. Und die Einbindung von ScriptLibs in andere Designelemente ist genau das allgemein gebräuchliche, erprobte und robuste Verfahren. Die Hinweise, die u.a. Axel gegeben hat, sind natürlich zu beachten - aber das muss man ja sowieso.

Weiterhin sind die maskenglobalen Declarations der Ort, über die sich die einzelnen Events wunderbar "unterhalten" können.

Bernhard

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Postopen und POstsave verknüpfen
« Antwort #12 am: 14.07.05 - 23:15:04 »
Du kannst einfach Funktionen da reinschreiben.
Oder in den Declarations Klassen.

Die Hilfe vom Domino Designer ist oft wirklich hilfreich.
Da sollte es Beispiele für Scriptlibs geben. Für Funktionen und Klassen.

Gruß Axel
« Letzte Änderung: 14.07.05 - 23:16:41 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Postopen und POstsave verknüpfen
« Antwort #13 am: 14.07.05 - 23:16:53 »
Und vor allem sollte man die Antworten, die man hier bekommt, ernst nehmen.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Postopen und POstsave verknüpfen
« Antwort #14 am: 14.07.05 - 23:25:10 »
Sehr hilfreich ist der Tipp von Thomas, also "On Event <Der Event>".
Allerdings habe ich mir dabei angewohnt, in den eigentlichen Maskenevents noch kurz einen Kommentar zu hinterlassen, z.B.:

Code
Sub Postopen(Source As Notesuidocument)
	'Wird über MyClass abgehandelt
End Sub

Denn sonst kann man schnell mal einen Programmier-Kollegen verwirren, der vielleicht fälschlicherweise der Meinung ist: Kein PostOpen-Code vorhanden -> PostOpen-Event wird nicht abgehandelt. Gerade in Datenbanken, die nicht komplett auf OO aufgebaut sind, besteht IMHO diese Gefahr...
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: Postopen und POstsave verknüpfen
« Antwort #15 am: 15.07.05 - 08:24:34 »
Sehr hilfreich ist der Tipp von Thomas, also "On Event <Der Event>".

Mein Punkt ist eigentlich, dass ich die Initialisierung kapseln würde. Entweder gleich in die Klasse oder in eine Factory, die mir sozusagen aus einem Notes(UI)Document ein initialisiertes Objekt der Klasse macht.

Das mit dem On Event ist Nebensache, ich habs nur dazugeschrieben, weils so gut passt.
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz