Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: F.Engel am 01.06.10 - 16:51:46
-
Hallo Leute,
ich habe eine Maske die eine Embedded View enthält.
Soweit so gut... der Ersteller des Dokuments soll Zugriff auf eine Action in der Action Bar
der Embedded View haben. Habe es über eine Hide-When Formel geregelt...
Allerdings zeigt er mir den Button nun garnicht mehr an...
Wie mache ihc das am besten? Geht das überhaupt?
Gruß
-
Habe das gerade ausprobiert. Die Information, wer der Ersteller des Dokuments ist, steht im Dokument (bzw. bei einem neuen Dokument ist es der aktuelle User). Auf die Information aus dem Dokument (wer ist der Ersteller oder ist das Dokument neu) kann die Verbergeformel der Schaltfläche nicht zugreifen. Daher muss das Dokument diese Information vor dem Öffnen an einer Stelle ablegen, auf die die Verbergeformel zugreifen kann.
Mein Testdokument verwendet dazu die Notes.ini (sollte schnell gehen, kann vielleicht besser ein Profildokument oder noch etwas anderes sein).
Im Queryopen des Dokuments passiert folgendes:
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Dim notesname As NotesName
Dim doc As NotesDocument
Set doc = Source.Document
If doc Is Nothing Then
'Neues Dokument -> Ersteller = User
Set notesname = New NotesName (session.Username)
Else
'Bestehendes Dokument -> Ersteller steht in Feld Ersteller
Set notesname = New NotesName (doc.Ersteller (0))
End If
'Ersteller in Notes.ini schreiben, Variablenname ist Dateiname der Datenbank
Call session.SetEnvironmentVar (db.Filepath, notesname.Abbreviated)
End Sub
Die Verbergeformel der Schaltfläche lautet:
@Environment (@Subset (@DBName; -1)) != @V3Username
Funktioniert!!
Einziger Nachteil könnte sein, dass die Information über den Ersteller nur an einer neutralen Stelle abgelegt werden kann - hier in Abhängigkeit des Dateinamens der Datenbank - und nicht in Abhängigkeit des Dokuments, denn dann könnte man ja direkt aus dem Dokument lesen. Sobald mehr als ein Dokument gleichzeitig geöffnet ist, gewinnt die Einstellung des letzten Dokuments. Allerdings verändert sich die Sichtbarkeit der Schaltfläche bei Änderung des Eintrages in der notes.ini nicht, so dass das vielleicht gar kein Problem ist. Das musst Du dann selber ausprobieren.
-
Noch ein Verbesserungsvorschlag:
Die Logik würde ich aus der Verbergeformel in das Queryopen auslagern. Die Verbergeformel könnte dann lauten:
@Environment (@Subset (@DBName; -1) + "Action1") != "1"
Im Queryopen wird dann entweder "1" oder "" in die Variable geschrieben, die ich hier noch um eine Schaltflächenbezeichnung ergänzt habe. Vorteil ist, dass
1. bei Änderung der Verbergelogik nur die Maske geändert werden muss
2. die Ansicht bei Einbettung in verschiedenen Masken auch bei unterschiedlichen Verbergelogiken funktioniert
-
Hallo,
was genau macht die Aktion denn - benutzt sie eventuell die ausgewählten Dokumente der Ansicht?
Toni