Autor Thema: Klasse zum Ansichten einheitliches Aussehen zu verpassen  (Gelesen 6984 mal)

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
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),  ;D wer nur schlechte Kritik für meine Arbeit hat kann Sie ja einfach verbessern oder ignorieren.  :P 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
« Letzte Änderung: 16.05.07 - 12:21:02 von Glombi »
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

Glombi

  • Gast
Re: Klasse zum Ansichten einheitliches Aussehen zu verpassen
« Antwort #1 am: 16.05.07 - 12:02:11 »
Schöne Sache, aber ich bekomme bei

strViewAliases(i)=Join(vwTemp.Aliases,";")

einen "Type mismatch".

Alle Ansichten haben einen Alias (das sollte aber nicht Voraussetzung sein).

Andreas

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
Re: Klasse zum Ansichten einheitliches Aussehen zu verpassen
« Antwort #2 am: 16.05.07 - 12:14:05 »
Hallo Andreas

Da hast Du recht. Verdammt vermiss ich einen Ort wo mein ganzer Code Zentral ist.  ::) Die Zeile hab ich in einem anderen durch so was ersetzt.

            If Isarray(vwTemp.Aliases) Then
               strViewAliases(i)=Join(vwTemp.Aliases,";")
            End If

Gruss
Remo
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

Glombi

  • Gast
Re: Klasse zum Ansichten einheitliches Aussehen zu verpassen
« Antwort #3 am: 16.05.07 - 12:21:35 »
Ok, das geht. Ich habe mir erlaubt, es in Deinem Code oben direkt auszuwechseln.

Danke für das Script!

Andreas

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
Re: Klasse zum Ansichten einheitliches Aussehen zu verpassen
« Antwort #4 am: 16.05.07 - 12:28:39 »
Hallo Andreas

Gern geschehen, freut mich wenn jemand mein Code gefällt. Ist sicher noch weit weg von perfekt :). Aber wer weiss vielleicht finden sich ja noch einige die Verbesserungen einbringen.

Gruss
Remo
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

Glombi

  • Gast
Re: Klasse zum Ansichten einheitliches Aussehen zu verpassen
« Antwort #5 am: 16.05.07 - 12:30:52 »
Es spart mir bspw. das mühsame und wenig aufregende Design vorhandener Ansichten auf eine neue GUI.  :D

Das "redesign" haue ich dann mit dem Configurator raus und gut ist.

Andreas

Offline Boox

  • Junior Mitglied
  • **
  • Beiträge: 64
  • Geschlecht: Männlich
Re: Klasse zum Ansichten einheitliches Aussehen zu verpassen
« Antwort #6 am: 17.08.07 - 11:18:05 »
Das hört sich ja mal genial an  :o
Vielen Dank für die tolle Idee, könnte mir in Zukunft viel Zeit ersparen  8)

Könnt ihr einem Script-Newbee vielleicht noch kurz erklären, wie ich das ganze benutze  ???
Ich denke mal, ich bastel mir daraus eine Script-Bibliothek...!?
Wie kann ich denn das ganze dann aufrufen?

Liebe Grüße,

Gregor

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
Re: Klasse zum Ansichten einheitliches Aussehen zu verpassen
« Antwort #7 am: 17.08.07 - 11:36:10 »
Hi Gregor

Freut mich, soweit ich mich noch erinnere werden die Farben von der Standardschablone übernommen. Also wird praktisch die Standardansicht kopiert. Da mal alles rausgeworfen und neu zusammengebaut. Aber ist schon Weilchen her. Habe vorher schon mal etwas ähnliches versucht mit DXL, aber mit zweifelhaften Erfolg. Hab mich auch kurz mal überlegt ob man das vielleicht kombinieren kann. Würde mich sehr freuen wenn was hübsches daraus machst und stehe gerne zur Verfügung wenn ich wo helfen kann. Am besten versuchst das ganze erst mal als Test in einer leeren Datenbank. Den Code kannst in eine Scriptlibary rein schmeissen. Agent dann so was.

(Declaration)
use "ScriptlibName"

Sub Initialize()
 dim session as new notessession
 dim db as notesdatabase
 Dim objViewDesign as ViewRedesigner

 set db=session.currentdatabase
 set objViewDesign=new ViewRedesigner(db)
 
 objViewDesign.RedesignViewsFromDefault
End Sub

PS: Hoffe hab mich nicht vertippt da ich das jetzt schnell mal direkt hier getippt habe.  ;D Auf diesem PC im Moment kein Lotus Notes drauf. Hoffe hilft.

Gruss
Remo
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

Offline Boox

  • Junior Mitglied
  • **
  • Beiträge: 64
  • Geschlecht: Männlich
Re: Klasse zum Ansichten einheitliches Aussehen zu verpassen
« Antwort #8 am: 17.08.07 - 11:47:22 »
Hallo Remo!
Super, das ging ja fix  ;D Werde es mal testen...

Zitat
Würde mich sehr freuen wenn was hübsches daraus machst
Bei meinem jetzigen Kenntnisstand würde mir schon reichen, wenn ich es zum Laufen bekomme  8)
Aber dank deiner Anleitung sollte das klappen!

Vielen Dank!!!

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: Klasse zum Ansichten einheitliches Aussehen zu verpassen
« Antwort #9 am: 17.08.07 - 12:49:40 »
Hallo
habe den Code mal überflogen. damit werden nur Spalten und nicht Ansichtseigenschaften ersetzt oder?

bubble
kurze Antwort reicht
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
Re: Klasse zum Ansichten einheitliches Aussehen zu verpassen
« Antwort #10 am: 17.08.07 - 16:49:04 »
Die Vorgabeansicht wird kopiert. Daraus entsteht die neue. Da werden dann Selektionsformel und die einzelnen Spalten reinkopiert.
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
Re: Klasse zum Ansichten einheitliches Aussehen zu verpassen
« Antwort #11 am: 19.08.07 - 17:47:20 »
OKey und was passiert mit den Ansichtsaktionen, fallen die raus?

bubble
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
Re: Klasse zum Ansichten einheitliches Aussehen zu verpassen
« Antwort #12 am: 19.08.07 - 23:21:44 »
Hi Bubble

Da kommen die von der Vorgabeansicht mit, nicht schön wird aber so sein. Habe den Code eigentlich mal für mich gemacht um nicht x Ansichten zu ändern (Aktionen sind da oft bei vielen Ansichten die selben). Bei den Aktionen hat man ja leider auch praktisch "fast" keine Möglichkeiten was zu erstellen oder modifizieren. Würde da nur die Möglichkeit über DXL sehen. Habe auch so etwas mal versucht. Leider waren Ansichten danach irgendwie zerschossen. Vielleicht würde eine Kombination von beidem zum Erfolg führen oder eventuell ist ja irgend etwas in der Hinsicht besser mit Lotus Notes 8 (DXL Import und Export oder LotusScript Klassen).

Gruss
Remo
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz