Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: padkey am 26.05.11 - 15:42:37

Titel: Richtextfield Tabelle formatieren bold, Rahmen ausblenden...
Beitrag von: padkey am 26.05.11 - 15:42:37
Hallo zusammen,

habe mir in einem richtextfield eine Tabelle erstellt, welche dann per Email versendet werden soll.
Code
Dim rtnavBody As NotesRichTextNavigator
Dim rtt As NotesRichTextTable
Dim rtrange As NotesRichTextRange 
Set rtnavBody = Memobody.CreateNavigator

If rtnavBody.FindFirstElement(RTELEM_TYPE_TABLE) Then
	Set rtt = rtnavBody.GetElement
	Call rtt.AddRow()	
End If

Dim styles(1 To 5) As NotesRichTextParagraphStyle

Dim richStyle As NotesRichTextStyle
Set richStyle = session.CreateRichTextStyle


Call Memobody.AppendTable(1,5) 
Call rtnavBody.FindNthElement(RTELEM_TYPE_TABLECELL,2)
Call Memobody.BeginInsert(rtnavBody)
Call Memobody.AppendStyle(richStyle)
richStyle.Bold = True
Call Memobody.AppendText("Datum")
richStyle.Bold = False
Call Memobody.EndInsert


Jedoch habe ich Formatierungsprobleme:
Laut meinem Tutorial (http://www.ibm.com/developerworks/lotus/library/ls-ND6_LSrichtext/index.html) sollte das Feld Datum "fett/bold" sein, ist es aber leider nicht.

Kann mir jemand sagen, waruM?

weiß jemand wo ich eine auflistung von Formatierungsmöglichkeiten finde? Bspw. Ausblenden vom Rahmen?

Vielen Dank
Titel: Re: Richtextfield Tabelle formatieren bold, Rahmen ausblenden...
Beitrag von: Tode am 26.05.11 - 15:50:35
so geht das nicht... in dem Moment, wo Du den Style anwendest, wird die Information in den Body geschrieben. Das muss also so aussehen:
Code
Call Memobody.AppendTable(1,5) 
Call rtnavBody.FindNthElement(RTELEM_TYPE_TABLECELL,2)
Call Memobody.BeginInsert(rtnavBody)
richStyle.Bold = True
Call Memobody.AppendStyle(richStyle)
Call Memobody.AppendText("Datum")
richStyle.Bold = False
Call Memobody.AppendStyle(richStyle)
Call Memobody.EndInsert
Titel: Re: Richtextfield Tabelle formatieren bold, Rahmen ausblenden...
Beitrag von: m3 am 26.05.11 - 15:53:21
Wie Tode schon ausführte, erst Style definieren, dann "Appenden", nicht umgekehrt.
Titel: Re: Richtextfield Tabelle formatieren bold, Rahmen ausblenden...
Beitrag von: Peter Klett am 26.05.11 - 17:00:03
Zur Übersichtlichkeit würde ich mir verschiedene richstyles definieren (z.B. einen für Überschriften, einen für normalen Text, einen für Zahlen usw.) und die dann zuordnen (append), anstatt nur eines zu nehmen und dann im laufenden Script ständig die Eigenschaften des Styles zu ändern. Spätestens, wenn Du mehrere Eigenschaften steuerst (Farbe, Größe, Fett, Schriftart usw.) blickt dann "keine Sau" mehr durch.
Titel: Re: Richtextfield Tabelle formatieren bold, Rahmen ausblenden...
Beitrag von: koehlerbv am 26.05.11 - 17:11:40
Das ist ein Weg, Peter. Eleganter finde ich aber noch eine Routine, die das mit definierten Parameter für mich übernimmt:

Call SetStyle (rti, BOLD#FONT=TIMES#SIZE=14#COLOUR=DEEPBLUE)

Das liest sich noch besser  ;)

Bernhard
Titel: Re: Richtextfield Tabelle formatieren bold, Rahmen ausblenden...
Beitrag von: Tode am 26.05.11 - 17:24:35
da fehlen aber Anführungszeichen, oder hast Du alle möglichen Variationen als Konstanten definiert? ;)
Titel: Re: Richtextfield Tabelle formatieren bold, Rahmen ausblenden...
Beitrag von: koehlerbv am 26.05.11 - 17:31:52
Sicher Konstanten (in der Lib) - sonst kann das ja übel werden. Sonst schreibt mir da noch jemand "[ move]" rein  ;D

Bernhard
Titel: Re: Richtextfield Tabelle formatieren bold, Rahmen ausblenden...
Beitrag von: Peter Klett am 26.05.11 - 18:34:01
Ich will mich ja nicht streiten, aber eleganter finde ich das nicht.

Wenn ich dann zentral (oder per Konfiguration) das Aussehen von bestimmten definierbaren Elementen (z.B. Überschriften usw.) ändern will, brauche ich bei den unterschiedlichen Styles nur an einer Stelle zu drehen, und nicht mitten im Script und immer wieder das gleiche. Ausser man definiert die Übergabeparameter in Variablen.

Call SetStyle (rti, ueberschrift)
Call SetStyle (rti, normalerText)

Allerdings muss der Übergabeparameter jedesmal geparst werden, und da wir sonst doch so pingelig mit jeder Millisekunde sind ...
Titel: Re: Richtextfield Tabelle formatieren bold, Rahmen ausblenden...
Beitrag von: padkey am 27.05.11 - 08:00:01
EDIT: Funktioniert mittlerweile!!!!!  :) :) :) :) :)

Okay ich blick jetzt ja (fast) schon nicht mehr durch und ich will nur fette Überschriften ::) dafür denke ich kann man es noch einfach so in den Code klatschen, sonst würde ich natürlich auf euere Vorschläge gerne zurückkommen...

Ich habe hier mal den ganzen Code reingestellt + die Ausgabe, da ich es auch mit Call Memobody.AppendStyle(richStyle) nach dem definieren leider nicht fett anzeigt bekomme...

Wie gesagt, es soll einfach nur eine einface Tabelle sein. Vorher war dies mit Tabstops gelöst, jedoch verschiebt sich das alles, da die Länge des Themas immer unterschiedlich lang ist.

Code
Dim richStyle As NotesRichTextStyle
Set richStyle = session.CreateRichTextStyle

'Put body into richtext field
Set MemoBody = memo.CreateRichTextItem( "Body" ) 

Dim rtnavBody As NotesRichTextNavigator
Dim rtt As NotesRichTextTable
Dim rtrange As NotesRichTextRange 
Set rtnavBody = Memobody.CreateNavigator

If rtnavBody.FindFirstElement(RTELEM_TYPE_TABLE) Then
	Set rtt = rtnavBody.GetElement
	Call rtt.AddRow()	
End If

Dim richStyle As NotesRichTextStyle
Set richStyle = session.CreateRichTextStyle

Call Memobody.AppendTable(1,5) 

Call rtnavBody.FindNthElement(RTELEM_TYPE_TABLECELL,2)
Call Memobody.BeginInsert(rtnavBody)
richStyle.Bold = True
Call Memobody.AppendStyle(richStyle)
Call Memobody.AppendText("Datum")
richStyle.Bold = False
Call Memobody.EndInsert

Call rtnavBody.FindNthElement(RTELEM_TYPE_TABLECELL,3)
Call Memobody.BeginInsert(rtnavBody)
richStyle.Bold = True
Call Memobody.AppendText("Thema")
richStyle.Bold = False
Call Memobody.AppendStyle(richStyle)
Call Memobody.EndInsert

Call rtnavBody.FindNthElement(RTELEM_TYPE_TABLECELL,4)
Call Memobody.BeginInsert(rtnavBody)
richStyle.Bold = True
Call Memobody.AppendText("Sektion")
richStyle.Bold = False
Call Memobody.AppendStyle(richStyle)
Call Memobody.EndInsert 

Call rtnavBody.FindNthElement(RTELEM_TYPE_TABLECELL,5)
Call Memobody.BeginInsert(rtnavBody)
richStyle.Bold = True
Call Memobody.AppendText("Sprache")
richStyle.Bold = False
Call Memobody.AppendStyle(richStyle)
Call Memobody.EndInsert 

Call rtnavBody.FindFirstElement(RTELEM_TYPE_TABLE)    
Set rtt = rtnavBody.GetElement
Call rtt.AddRow()

Call rtnavBody.FindNthElement(RTELEM_TYPE_TABLECELL,6)
Call Memobody.BeginInsert(rtnavBody)
Call MemoBody.AppendDocLink(newDoc,"","")
Call Memobody.EndInsert

Call rtnavBody.FindNthElement(RTELEM_TYPE_TABLECELL,7)
Call Memobody.BeginInsert(rtnavBody)
Call Memobody.AppendText(newDocDatum)
Call Memobody.EndInsert

Call rtnavBody.FindNthElement(RTELEM_TYPE_TABLECELL,8)
Call Memobody.BeginInsert(rtnavBody)
Call Memobody.AppendText(newDocThema)
Call Memobody.EndInsert

Call rtnavBody.FindNthElement(RTELEM_TYPE_TABLECELL,9)
Call Memobody.BeginInsert(rtnavBody)
Call Memobody.AppendText(newDocSektion)
Call Memobody.EndInsert

Call rtnavBody.FindNthElement(RTELEM_TYPE_TABLECELL,10)
Call Memobody.BeginInsert(rtnavBody)
Call Memobody.AppendText(newDocSprache)
Call Memobody.AppendStyle(richStyle)
Call Memobody.EndInsert

[Hier die aktuelle Ausgabe:
[URL]
Vielen Dank nochmals für die netten Anregungen zur übersichtlichen Darstellung... (http://imageshack.us/photo/my-images/806/tabelleu.png/)
Titel: Re: Richtextfield Tabelle formatieren bold, Rahmen ausblenden...
Beitrag von: padkey am 27.05.11 - 11:37:11
naja neues problem:

"Illegal column width - check Left and Richt margins on line 83"

Code
Const COLUMN_COUNT = 5 
Dim tableColStyles(1 To COLUMN_COUNT)  As NotesRichTextParagraphStyle
Dim i As Integer
For i = 1 To COLUMN_COUNT Step 1
		Set tableColStyles(i) = session.CreateRichTextParagraphStyle				' Create the rt paragraph style for this column
		tableColStyles(i).Alignment = ALIGN_CENTER
		tableColStyles(i).FirstLineLeftMargin = 0												' Set left margin for the first line of each cell in column
		tableColStyles(i).LeftMargin = 0		
	Next

	Call Memobody.AppendTable( 2, COLUMN_COUNT,,,tableColStyles)
[code]
Call Memobody.AppendTable( 2, COLUMN_COUNT,,,tableColStyles) ist Line 83

weiß jemand was ich gegen den Fehler machen kann?
[/code]
Titel: Re: Richtextfield Tabelle formatieren bold, Rahmen ausblenden...
Beitrag von: marschul am 27.05.11 - 12:05:55
Mal probiert, auch ein .RightMargin anzugeben?