Dim style as rtStyle, tableBasic as rtTableStyle, rowDisplay as rtRowDisplayStyle
Dim borderStyle as rtBorderStyle ' these are just defined for indexer to find references to the classes/methods used
' define font style for table labels
Dim labelfont as New rtFontStyle (0)
set labelfont.Color = New rtColor(COLOR_RED)
labelfont.Color.setRGB cint(255*rnd), cint(255*rnd), cint(255*rnd) ' random color
labelfont.FontSize = 15
call ctxDump.getRichTextItem(doc,"Body")
' get the table
Set coll = ctxDump.Collection (PARSE_GROUP_TABLE) ' this parses and retrieves the tables
dim table as rtTable, table2 as rtTable, o as variant, tabs as string, i as Integer, j as integer
dim RowStyle as rtRowDisplayStyle
set table = coll.getFirstElement ' we just have one table - otherwise we need to work through the collection
ctxDump.Collection PARSE_GROUP_TEXT ' just call it so we can obtain text from the cells
With table
.rows (1).TabLabel = ""
.rows (2).TabLabel = strRight(table.cells(2,2).getText, CRLF) ' every cell starts with paragraph break
.rows (3).TabLabel = strRight(table.cells(3,2).getText, CRLF)
.rows (4).TabLabel = strRight(table.cells(4,2).getText, CRLF)
.Style.RowDisplay.Viewer = CDTABLEVIEWER_TABS
.Style.RowDisplay.TabPosition = TAB_POSITION_TOP
.Style.RowDisplay.TabsWithFieldDriven = True ' allows both programmatic and manual switching
.tableID = "robert" ' $robert will be field to set the selected tab
Set .Style.Font = labelfont ' starting version 1.5 rtLib allows to set label style
End With
' * let's implement programmatic switching; click on button cycle through the tab labels
' * we can do it (set field) even if the doc is in read mode dim button as new rtButton(0)
Set button.Label = new rtLabel("Cycle Tabs")
tabs=table.rows (2).TabLabel &"#" &table.rows (3).TabLabel &"#" &table.rows (4).TabLabel
button.formula = |list:=@explode("| &tabs &|";"#"); | &_
|FIELD cnt:=@if(cnt="";@elements(list);@Modulo(cnt +1; @elements(list))+1);label:=@subset(@subset(list;cnt);-1); | &_
|FIELD $robert:=label;@Command([RefreshHideFormulas]);""|
ctxDump.add button
' lets create a similar table
set table1 = new rtTable(2,2)
for i=1 to 3
for j=1 to 3
 set table1.Cells(i,j) = table.Cells(i+1,j) ' ommit first row
Next j
Next i
' make some looks
dim tabStyle as rtTableStyle
set tabStyle = table1.Style.TableLayout
tabStyle.ColorStyle = CDTABLE_LEFT
Set tabStyle.Color = New rtColor(0)
tabStyle.Color.setRGB 255,0,100
tabStyle.AltColor.Green = 200 ' both other are 0 by default
' table borders (cell borders may be set separately)
tabStyle.BorderStyle = CDTABLE_3D_BORDER_EMBOSS
'set table1.style.Border.Color = new rtColor(0) ' it ignores color?
'table1.style.Border.Color.setRGB 200,100,0
table1.style.Border.BorderWidths = 10
table1.style.Border.dropShadowWidth = 12
tabStyle.InnerBorderColor.setRGB 54,106,182
table1.useBorderColor=true
tabStyle.minRowHeight=2*ONE_CM
table1.ColumnSpacing=2*ONE_CM
ctxDump.addnewLine 1
ctxDump.add table1
|