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:
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?
Problem gelöst!!
Das Problem war die Bedingung
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:
Hi Biene,
hier noch ne andere Lösung.
Vor dem Hinzufügen alle Zellen zählen:
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:
Call rtnavTable.FindNthElement(RTELEM_TYPE_TABLECELL, LetzteZelle + 1)
Damit steht man in der ersten Spalte in der neuen Zeile.