Domino 9 und frühere Versionen > ND6: Entwicklung
Eigenschaften dynamisch gestalten
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