Hallo zusammen
Habe mir eine Klasse gebaut, die mit Hilfe der Standardansicht dabei helfen kann das Aussehen der übrigen Ansichten anzupassen. Wer es brauchen kann viel Spass damit (wenn gute Verbesserungen hast Post den doch hier),
wer nur schlechte Kritik für meine Arbeit hat kann Sie ja einfach verbessern oder ignorieren.
Hier der Code:
Klasse:
Class ViewRedesigner
'Diese Klasse dient zum übernehmen von Farben,
'Schriften und Aktionen von einer anderen Ansicht.
Private mDB As NotesDatabase
Sub New(db As NotesDatabase)
Set mDB=db
End Sub
'Durchläuft alle Ansichten und sammelt Informationen wie die Standardansicht,
'die Ansichtsnamen und die Aliases um dann RedesignView mit den Infos zu füttern.
Sub RedesignViewsFromDefault()
Dim strMasterView As String
Dim vwTemp As NotesView
Dim strViewNames() As String
Dim strViewAliases() As String
Dim i As Long
Forall objView In mdb.Views
Set vwTemp=objView
If vwTemp.IsDefaultView Then
strMasterView=vwTemp.Name
Else
Redim Preserve strViewNames(i) As String
Redim Preserve strViewAliases(i) As String
strViewNames(i)=vwTemp.Name
If Isarray(vwTemp.Aliases) Then
strViewAliases(i)=Join(vwTemp.Aliases,";")
End If
i=i+1
End If
End Forall
For i=Lbound(strViewNames) To Ubound(strViewNames)
RedesignView strMasterView,strViewNames(i),strViewAliases(i)
Next
End Sub
'Erstellt neue Ansicht basierend auf der Ansicht die bei MasterView
'mitgegeben wird, aber mit der Selektions Formel von der Ansicht
'die mit ViewName mitgegeben wird. Bei dieser neuen Ansicht
'werden dann die Spalten gelöscht und die von der Ansicht ViewName
'hinzugefügt. Danach werden noch die Formatierungen der ersten Spalte
'von MasterView in diese neue Ansicht übernommen.
Sub RedesignView(MasterView As String, ViewName As String, ViewAliases As String)
Dim vwMaster As NotesView
Dim vwRedesign As NotesView
Dim vwTemp As NotesView
Dim vcTemp As NotesViewColumn
Dim vcMaster As NotesViewColumn
Dim vcNew As NotesViewColumn
Dim i As Long
Set vwRedesign=mdb.GetView(ViewName)
Set vwMaster=mdb.GetView(MasterView)
If Not vwRedesign Is Nothing And Not vwMaster Is Nothing Then
Set vcMaster=vwMaster.Columns(1)
Set vwTemp=mdb.CreateView(ViewName & " redesigned",vwRedesign.SelectionFormula ,vwMaster ,False)
If Not ViewAliases="" Then
vwTemp.Aliases=Split(ViewAliases,";")
End If
If Not vwTemp Is Nothing Then
For i=vwTemp.ColumnCount To 1 Step -1
vwTemp.RemoveColumn(i)
Next
End If
i=1
Forall objColumn In vwRedesign.Columns
Set vcTemp=objColumn
Set vcNew=vwTemp.CopyColumn(vcTemp,i)
vcNew.HeaderFontColor=vcMaster.HeaderFontColor
vcNew.HeaderFontFace=vcMaster.HeaderFontFace
vcNew.HeaderFontPointSize=vcMaster.HeaderFontPointSize
vcNew.HeaderFontStyle=vcMaster.HeaderFontStyle
vcNew.FontColor=vcMaster.FontColor
vcNew.FontFace=vcMaster.FontFace
vcNew.FontPointSize=vcMaster.FontPointSize
vcNew.FontStyle=vcMaster.FontStyle
i=i+1
End Forall
End If
End Sub
End Class
Aufruf:
Sub Initialize
Dim session As NotesSession
Dim db As NotesDatabase
Dim objRedesigner As ViewRedesigner
Set session=New NotesSession
Set db=session.CurrentDatabase
Set objRedesigner=New ViewRedesigner(db)
objRedesigner.RedesignViewsFromDefault
End Sub
Gruss
Remo