Domino 9 und frühere Versionen > ND6: Entwicklung

Eigenschaften dynamisch gestalten

(1/2) > >>

mibo11:
Hallo zusammen,

ich experimentiere gerade mit der NoteCollection, die Frage ist allerdings eher allgemeiner Natur.

Kann man Eigenschaften auch dynamisch erzeugen? Folgender Hintergrund:

Über nc.SelectForms = True oder nc.SelectViews = True etc. wird bei der NoteCollection bestimmt welche Designelemente eigelesen werden sollen.

Nun benötige ich nur die Masken, Teilmasken und Ansichten, d.h. ich müsste 3x eine NoteCollection durchlaufen, die mir dann die Ergebnisse zurückliefert. Ich möchte nun eine allgemeine Funktion schreiben und nur die Eigenschaft nc.SelectForms = True, etc. dynamisch zuweisen. Etwa so:

Dim eigenschaft List as String

eigenschaft(0) = "nc.SelectForms = True"
eigenschaft(1) = "nc.SelectViews = True"
eigenschaft(2) = "nc.SelectSubForms = True"

Forall x in eigenschaft
.....
' hier sollte die Eigenschaft aufgelöst werden
' hier darf natürlich nicht der String aus der Listvariable eingelesen werden

End Forall

Hat jemand eine Idee? Geht das überhaupt?

Gruß Sascha

PS: Ich weiß, dass man die Eigenschaften auch zu Anfang mehrfach belegen kann und man dann nur einen Durchlauf statt 3 benötigt.

diali:
Funktioniert mit BuildCollection
--- Code: ---Dim nc As NotesNoteCollection
Set nc = db.CreateNoteCollection(False)
Call nc.SelectAllFormatElements(False)
nc.SelectForm = True
nc.SelectViews = True
nc.SelectSubForm = True
Call nc.BuildCollection
--- Ende Code ---

mibo11:

--- Zitat von: diali am 23.08.05 - 12:28:22 ---Funktioniert mit BuildCollection
--- Code: ---Dim nc As NotesNoteCollection
Set nc = db.CreateNoteCollection(False)
Call nc.SelectAllFormatElements(False)
nc.SelectForm = True
nc.SelectViews = True
nc.SelectSubForm = True
Call nc.BuildCollection
--- Ende Code ---

--- Ende Zitat ---

Hallo Diali,

ich weiß, aber das war leider nicht die Fragestellung, trotzdem vielen Dank für Hilfe.

Ich habe mir jetzt anders geholfen, indem ich die Eigenschaft übewr ein Select Case abfrage. Anbei der relevante Teil des Codes.

 ......


design_elemente("Masken") = "elemente_masken"
design_elemente("Ansichten") = "elemente_ansichten"
   
......
   
Set zieldb_nc = ziel_db.CreateNoteCollection(False)
      Forall wert In design_elemente
         Call zieldb_nc.SelectAllNotes( False )   
         Select Case Listtag(wert)
         Case "Masken"
            zieldb_nc.SelectForms = True
         Case "Ansichten"
            zieldb_nc.SelectViews = True
         End Select         
         Call zieldb_nc.BuildCollection   
         DesignElementeUeberArrayFuellen(wert)
      End Forall      

Gruß Sascha

Tode:
Deine Lösung ist so wie sie ist sauber.

Dein erster Ansatz sollte (imho) immer nur in Notfällen verwendung finden, oder wenn man eine extreme Konfigurierbarkeit braucht.
Wenn Du trotzdem mal die Möglichkeit suchst, zur Laufzeit bestimmten Code auszuführen, den Du irgendwo übergibst, dann versuche es so:

x = execute( eigenschaft(0) )

Gruß
Tode

mibo11:
Hallo Tode,

danke für den Hinweis. Ich hatte auch schon versucht über Execute zu arbeiten, leider ohne Erfolg. Ich bekomme leider nicht hin die fettgeschriebenen Teile dynamisch zu generieren, daher der Weg über den Select Case.

nc.SelectForms = True
nc.SelectViews = True
nc.SelectSubForms = True

Gruß Sascha

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln