Autor Thema: Wiederholender Scriptabschnitt  (Gelesen 1553 mal)

Offline Hedwig14

  • Aktives Mitglied
  • ***
  • Beiträge: 221
Wiederholender Scriptabschnitt
« am: 04.08.06 - 15:31:10 »
Hallo !

Ich habe in einer Datenbanken mehrere Scripte in denen jedesmal der u.a.
Scriptabschnitt eingetragen ist:

Wie kann ich diesen Bereich ausgliedern, damit ich ihn nur einmal pflegen muss.
und wie rufe ich den part in meinem script auf ?



Set rtItem= New NotesRichTextItem( mdoc , "Body")
   
   Set styleÜberschrift=s.createRichTextStyle()
   styleÜberschrift.bold=True
   styleÜberschrift.Underline = True
   styleÜberschrift.NotesColor = COLOR_Dark_Blue
   styleÜberschrift.fontsize=13
   
   Set styleHeadline=s.createRichTextStyle()
   styleHeadline.bold=True
   styleHeadline.Underline = False
   styleHeadline.NotesColor = COLOR_Dark_Blue
   styleHeadline.fontsize=10
   
   Set styleNormal=s.createRichTextStyle()
   styleNormal.bold=False
   styleNormal.Underline = False
   styleNormal.NotesColor = COLOR_Black
   styleNormal.fontsize=10      

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Wiederholender Scriptabschnitt
« Antwort #1 am: 04.08.06 - 15:39:17 »
Du kannst versuchen den Code in eine Routine in eine Script-Bibliothek zu packen.

Die Script-Bibliothek bindest du dann mit Use "Name_der_Bibliothek" ein.


Axel
 
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline mibo11

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
Re: Wiederholender Scriptabschnitt
« Antwort #2 am: 04.08.06 - 15:40:34 »
Z.B. eine Funktion oder Subroutine innerhalb einer Scriptbibliothek einbinden und dann aufrufen.

siehe Hilfe Scriptbibliotheken / Functionen / Subroutinen

Offline gossifu

  • Senior Mitglied
  • ****
  • Beiträge: 352
  • Geschlecht: Männlich
  • Dummheit schafft Freizeit
Re: Wiederholender Scriptabschnitt
« Antwort #3 am: 04.08.06 - 15:49:01 »
Hallo,

obwohl der aufwand ein wenig hoch ist...
Erstelle eine Scriptbibliothek und danach binde diese in die anderen Scripte mit 'Use ...' in den Options ein.
In der Bibliothek schreibst Du eine Sub mit diesem Code:

Code
Sub style_setzen(rtitem as NotesRichtextItem, styleÜberschrift as NotesRichtextStyle, styleHeadline as NotesRichtextStyle, styleNormal as NotesRichtextStyle)
   
   styleÜberschrift.bold=True
   styleÜberschrift.Underline = True
   styleÜberschrift.NotesColor = COLOR_Dark_Blue
   styleÜberschrift.fontsize=13
   
   styleHeadline.bold=True
   styleHeadline.Underline = False
   styleHeadline.NotesColor = COLOR_Dark_Blue
   styleHeadline.fontsize=10
   
   styleNormal.bold=False
   styleNormal.Underline = False
   styleNormal.NotesColor = COLOR_Black
   styleNormal.fontsize=10      

end sub

Scriptbibi speichern und die anderen Scripte

und anstatt des Codes rufst Du einfach nur noch die Sub auf

Code
Set rtItem= New NotesRichTextItem( mdoc , "Body")
Set styleÜberschrift=s.createRichTextStyle()
Set styleHeadline=s.createRichTextStyle()
Set styleNormal=s.createRichTextStyle()
      
Call style_setzen(rtitem, styleÜberschrift, styleHeadline, styleNormal)

Alle veränderten Scripte speichern. Fertsch.

mfg

Kjeld

PS: Umlaute sind schlecht

Edit: Code geändert, um gesetzte Objekte zu übergeben.
« Letzte Änderung: 04.08.06 - 15:57:09 von gossifu »
Immer lustig und vergnügt, bis der A.... im Sarge liegt. ;-)

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Wiederholender Scriptabschnitt
« Antwort #4 am: 04.08.06 - 22:08:41 »
Ich würde nicht den Code von gossifu so einsetzen.
Warum ?
Eine Script-Library sollte so flexibel wie möglich sein - und mit den 4 Übergabeparametern von gossifu bist du das nicht.

Du mußt das übergeben, was du zur Definition deines Elements von der aufrufenden Routine brauchst - nicht mehr. Das ist im Fall eines RichTextStyles die SESSION, nichts anderes. Die einzelnen Styles definierst du in der Script-Library ABSATZSTILE als globale Variablen. Also:

(Declarations)
Dim RS_Title As NotesRichtextStyle
Dim RS_SubTitle As NotesRichtextStyle
Dim RS_Normal As NotesRichtextStyle

Sub StyleFestlegen(xSession)
   Set RS_Title = xSession.CreateRichTextStyle
   Set RS_SubTitle = xSession.CreateRichTextStyle
   Set RS_Normal = xSession.CreateRichTextStyle

   RS_Title.bold=True
   RS_Title.Underline = True
   RS_Title.NotesColor = COLOR_Dark_Blue
   RS_Title.fontsize=13
   
   RS_SubTitle.bold=True
   RS_SubTitle.Underline = False
   RS_SubTitle.NotesColor = COLOR_Dark_Blue
   RS_SubTitle.fontsize=10
   
   RS_Normal.bold=False
   RS_Normal.Underline = False
   RS_Normal.NotesColor = COLOR_Black
   RS_Normal.NotesFont = FONT_HELV
   RS_Normal.Italic = False
   RS_Normal.fontsize=10
End Sub

In den Scripts, die dies verwenden, fügst du bei OPTIONS ein
Use "ABSATZSTILE"

Im Code kommt dann

Call Stylefestlegen(s)

Das ist die einzige Zeile Code, die du noch in den Scripten brauchst.

Und dann ersetzst du die jetzigen Stile durch die neuen mit Suchen und Ersetzen. Wenn du unbedingt gleiche Namen verwenden willst, um dir das Suchen und Ersetzen zu ersparen, mußt du darauf achten, daß du die lokalen Deklarationen der Stile in den Einzelscripten jeweils entfernst. Aus Erfahrung rate ich eher zur SUCHEN UND ERSETZEN-Methode, weil du ansonsten leicht einmal lange nach einem Fehler suchst, der durch Weiterverwendung einer nicht gelöschten lokalen Variablen entsteht.

Und Umlaute in Variablennamen (styleÜberschrift) werden dir spätestens bei einem Rollout deiner Anwendung in Richtung Asien ganz übel aufstoßen - pardon: uebel aufstossen.

Ein paar Bemerkungen noch am Rande:
ich habe den Namen der Script-Library ABSATZSTILE absichtlich in Großbuchstaben geschrieben. Beim Kompilieren fällt der Fehler nicht auf, aber beim Verwenden achtet Notes genau auf die Groß-Kleinschreibung.

Wenn ihr morgen einen Stil RS_SCHMAL braucht, führst du ihn einfach in die Script-Library ein und kannst ihn sofort verwenden (du hast nur die Session übergeben und die Stile als GLOBALE Variablen definiert). Mit dem Script von GOSSIFU hättest du an der Stelle verloren, denn du müßtest es um einen Parameter erweitern - und das heißt: diesen Aufruf in allen Scripten gleichzeitig ändern.

Gruß

Norbert
« Letzte Änderung: 04.08.06 - 22:19:36 von LN4ever »
Situs vilate in isse tabernit.

Offline Hedwig14

  • Aktives Mitglied
  • ***
  • Beiträge: 221
Re: Wiederholender Scriptabschnitt
« Antwort #5 am: 05.08.06 - 11:08:54 »
Norbert,

ich danke Dir ganz herzlich für den genialen beitrag !
Hat mich bestens weitergebracht ! Herzlich DANK !

Schönes Wochenende !

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Wiederholender Scriptabschnitt
« Antwort #6 am: 06.08.06 - 13:34:04 »
Liebe Hedwig,

ich hatte geschrieben "Wenn ihr morgen einen Stil RS_SCHMAL braucht, führst du ihn einfach in die Script-Library ein und kannst ihn sofort verwenden ..."

Und da kommt leider eine der Tücken von Notes: du mußt in einem solchen Fall die Scripte, die diese Library verwenden, neu durchkompilieren, damit sie die neue nachträglich eingeführte Variable kennen (das machst du automatisch, wenn du die neue Variale in einem Script benutzen willst). In dem oben beschriebenen Fall ist daher nichts Schlimmes zu befürchten.

Aber es ist immer gut, wenn du in einer Script-Library als Kommentar vermerkst, aus welchen Scripten heraus sie benutzt wird, damit du bei der Einführunng neuer globaler Variablen in der Library diese Scripte nachkompilieren kannst und möglichst alle erwischst.

Und noch eine Kleinigkeit: du siehst im Debugger in einem Script nur die globalen Variablen einer Script-Library, die in diesem Script auch verwendet werden. Was heißt das ?

Du baust das USE "ABSATZSTILE" und den Aufruf Call Stylefestlegen(s) in dein Script ein, aber du siehst beim Debuggen des Scripts keine globale Variable RS_Normal, RS_Title usw.

Wenn du in dem Script aber einmal ein RS_TITLE verwendest, dann siehst du auch diese eine Variable beim Debuggen des Scripts. Verwendest du auch einmal RS_Noormal, dann siehst du auch diese.

Und damit wird klar, daß der spätere Einbau von RS_SCHMAL für die bestehenden Anwendungen nicht schlimm ist, solange sie diese Variable nicht verwenden.
Situs vilate in isse tabernit.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz