Autor Thema: Eigenschaften dynamisch gestalten  (Gelesen 1386 mal)

Offline mibo11

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
Eigenschaften dynamisch gestalten
« am: 23.08.05 - 12:12:02 »
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.
« Letzte Änderung: 23.08.05 - 20:10:19 von mibo11 »

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Eigenschaften dynamisch gestalten
« Antwort #1 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
Gruß
Dirk

Offline mibo11

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
Re: Eigenschaften dynamisch gestalten
« Antwort #2 am: 23.08.05 - 12:55:07 »
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

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

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Eigenschaften dynamisch gestalten
« Antwort #3 am: 24.08.05 - 15:35:01 »
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
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline mibo11

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
Re: Eigenschaften dynamisch gestalten
« Antwort #4 am: 24.08.05 - 19:49:25 »
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

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Eigenschaften dynamisch gestalten
« Antwort #5 am: 25.08.05 - 08:37:07 »
nur ein Schuss ins blaue, habs nicht probiert, das ganze ist hier in diesem Formular programmiert, also ohne jede Syntaxprüfung...:

Type eigenschaft
   prop as String
   op as String
   val as String
End Type

Dim eigenschaften( 1 ) as eigenschaft

eigenschaften(0).prop = "SelectForms"
eigenschaften(0).op = "="
eigenschaften(0).val = "True"
eigenschaften(1).prop = "SelectViews"
eigenschaften(1).op = "="
eigenschaften(1).val = "True"

exString = |With nc |
cr = Chr$( 10 )
for i = 0 to ubound( eigenschaften )
   exString = exString & cr & "." & eigenschaften( i ).prop & eigenschaften( i ).op & eigenschaften(i).val
Next i
exString = exString & cr & "|End With|"

x = execute( exString )

So oder so ähnlich könnte sowas aussehen.

HTH
Tode
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline mibo11

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
Re: Eigenschaften dynamisch gestalten
« Antwort #6 am: 26.08.05 - 00:05:55 »
Hallo Tode,

vielen Dank für den Code. Habe ihn geringfügig geändert und ausprobiert, jedoch ohne Erfolg.


   Type eigenschaft
       prop As String
       op As String
       val As String
   End Type

   Dim s As New notessession
   Dim zieldb As NotesDatabase
   Set zieldb = s.CurrentDatabase
   
   Set nc = zieldb.CreateNoteCollection(False)
   Dim eigenschaften( 1 ) As eigenschaft
   
   eigenschaften(0).prop = "SelectForms"
   eigenschaften(0).op = "="
   eigenschaften(0).val = "True"
   eigenschaften(1).prop = "SelectViews"
   eigenschaften(1).op = "="
   eigenschaften(1).val = "True"
   
   exString = |With nc |
   cr = Chr$( 10 )
   For i = 0 To Ubound( eigenschaften )
      exString = exString & cr & "." & eigenschaften( i ).prop & eigenschaften( i ).op & eigenschaften(i).val
   Next i
   exString = exString & cr & |End With|
   
   
   x = Execute( exString )


Hast du noch eine Idee?

Gruß Sascha

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz