Wo es imho schon mal hängt ist, dass ich im Postopen-Event was in eine (in der Maske definierten) globalen Variable schreibe, worauf ich im Postsave wieder zugreifen will. Kann ich das in der Klasse machen oder muss ich das direkt im Postopen/Postsave machen?
Du kannst die Behandlung von Events, die von der Maske ausgelöst werden, an die Klasse delegieren (das steht auch in dem Artikel, den Bernhard anführt).
Stichwort 'On Event x From y Call z'
Hier als Beispiel dazu ein Ausschnitt aus einer Klasse
Im QueryOpen-Event des Dokuments wird ein Objekt dieser Klass erzeugt. Alle für mich interessanten Events, die danach ausgelöst werden, werden von diesem Objekt behandelt (das wird in dem Konstruktor (Sub New) festgelegt).
Public Class xyz
Private m_udFrontendDoc As notesuiDocument
Private m_docBackendDoc As notesDocument
Sub New(udCurrentDoc As notesUIDocument)
%REM
------------------------------------------------------------------------------------------------------------------------
Author: TV
Date: 23.10.2003
Description: Ich initialisiere meine Attribute und sorge dafür, dass Events aus dem FrontendDocument
durch mich bearbeitet werden.
Parameter: udCurrentDoc: NotesUIDocument
Das Frontend-Dokument, das die Agent-Informationen anzeigt
Return Value: <Name, Datentyp und Erklärung des Rückgabewertes>
History:
------------------------------------------------------------------------------------------------------------------------
%END REM
'Frontend-Dokument und zugehöriges Backend-Dokument besorgen
Set m_udFrontendDoc = udCurrentDoc
'Achtung! Das BackendDokument ist in normalen Masken erst im Postopen Event verfügbar!
'In Dialogboxen kann es schon im QueryOpen Event verfügbar sein.
Set m_docBackendDoc = udCurrentDoc.Document
'auf Events des FrontendDokuments reagieren
On Event Postopen From m_udFrontendDoc Call ProcessPostopen
On Event Postrecalc From m_udFrontendDoc Call ProcessPostrecalc
'Zeitgesteuerte Agenten suchen und dem Benutzer zur Auswahl anzeigen
Call initAgentMap()
Call collectScheduledAgents
Call m_docBackendDoc.ReplaceItemValue(ST_DEFI_AMGR_AvailableAgents, m_asScheduledAgents)
End Sub
Sub ProcessPostopen(Source As Notesuidocument)
%REM
------------------------------------------------------------------------------------------------------------------------
Author: TV
Date: 23.10.2003
Description: Ich aktualisiere das FrontendDokument
Parameter: <Name, Datentyp und Erklärung des Übergabeparameters>
Return Value: <Name, Datentyp und Erklärung des Rückgabewertes>
History:
------------------------------------------------------------------------------------------------------------------------
%END REM
Call m_udFrontendDoc.Refresh()
End Sub
End Class