Autor Thema: Tabellen erzeugen mit NotesRichTextTable  (Gelesen 2484 mal)

Offline Biene0910

  • Frischling
  • *
  • Beiträge: 2
Tabellen erzeugen mit NotesRichTextTable
« am: 27.03.07 - 10:55:09 »
Ich möchte in einem RichTextItem (mailbody) eine Tabelle erzeugen.
Die Besonderheit ist, dass ich die Zeilen dynamisch anhänge, weil ich im Vorhinein nicht weiß, wie groß die Tabelle sein muss.

Hier ein Codeausschnitt:
Code
If rtnav.FindFirstElement(RTELEM_TYPE_TABLE) = False Then
	'd.h. es wurde noch keine Tabelle angelegt
	Call tempRTI.AppendTable(1, 3)
	rtnav.FindFirstElement(RTELEM_TYPE_TABLE)		
	Set RTtable = rtnav.GetElement
	rtnav.FindFirstElement(RTELEM_TYPE_TABLECELL)	
End If		
Dim col As Integer 				
For col = 1 To 3
	Call mailbody.BeginInsert(rtnav)
	Select Case col
	Case 1: 
		Call mailbody.AppendDocLink(form, "Neues Dokument ansehen")
	Case 2:
		Call mailbody.AppendText("Spalte2")
	Case 3:
		Call mailbody.AppendText("Spalte3")
	End Select					
	Call mailbody.EndInsert
	rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
Next	
rtnav.FindLastElement(RTELEM_TYPE_TABLECELL)
RTtable.AddRow

Habe ich eine Zeile, funktioniert das auch. Beim Anfügen von einer weiteren Zeile scheint er jedoch die Position der letzten Zelle zu verwerfen, sodass er am Anfang der Tabelle (sogar VOR der Tabelle) mit dem Schreiben weitermacht.
Zur besseren Vorstellung habe ich ein mal 2 Screenshots angehängt.

Hat da jemand eine Idee? Sowas schonmal gelöst?

Offline Biene0910

  • Frischling
  • *
  • Beiträge: 2
Re: Tabellen erzeugen mit NotesRichTextTable
« Antwort #1 am: 27.03.07 - 12:12:49 »
Problem gelöst!!   

Das Problem war die Bedingung
Code
If rtnav.FindFirstElement(RTELEM_TYPE_TABLE) = False Then
Dadurch wird beim Schleifenaufruf der "Positionsmerker" verstellt.

Habe jetzt eine Variable rowcount eingefügt, die bei addRow hochgezählt wird. Somit kann man an der Stelle folgendes Abfragen:
Code
If rowcounter = 0 Then

Offline sloe

  • Aktives Mitglied
  • ***
  • Beiträge: 175
  • Geschlecht: Männlich
  • Never stop a running admin...
Re: Tabellen erzeugen mit NotesRichTextTable
« Antwort #2 am: 27.03.07 - 14:00:42 »
Hi Biene,

hier noch ne andere Lösung.
Vor dem Hinzufügen alle Zellen zählen:

Code
LetzteZelle = GetCount(RTELEM_TYPE_TABLECELL)
...
Function GetCount(elementType As Integer) As Integer
	GetCount = 0
	If rtnavTable.FindFirstElement(elementType) Then
		Do
			GetCount = GetCount + 1
		Loop While rtnavTable.FindNextElement(elementType)
	End If
End Function


Wobei GetCount den rtnavTable als globale Variable bekommt und dann nach dem Einfügen der neuen Zeile:

Code
	Call rtnavTable.FindNthElement(RTELEM_TYPE_TABLECELL, LetzteZelle + 1)

Damit steht man in der ersten Spalte in der neuen Zeile.

Gruß
sloe

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz