My code is below. I have my own BehaviorBase. MMSetDefaultProperties is called in InitializeNode event and MMResizeAllToFitTable is called in NodeModifying event.
My settings:
'setting defaults settings of shape
Public Sub MMSetDefaultProperties()
Me.Constraints.MinHeight = 10
Me.Constraints.MinWidth = 20
Me.Bounds = RectangleVirginCreate(0, 0, 30, 50)
Me.EnableStyledText = False
Me.Font = New Font("Arial", 8, FontStyle.Regular)
Me.OffsetHeaderRows = True
Me.AnchorPattern = MMCreateAnchorPatternSurrounding(9)
Me.Brush = New LinearGradientBrush(Color.White, Color.Green, 45)
Me.Pen = New Pen("0/#FF696969/0/0/0//0/0/10/")
Me.HandlesStyle = HandlesStyle.EasyMove
Me.ShadowOffsetX = 0.5
Me.ShadowOffsetY = 0.5
Me.CustomDraw = CustomDraw.Additional
Me.Style = TableStyle.RoundedRectangle
Me.ConnectionStyle = TableConnectionStyle.Table
Me.RowHeight = 5
Me.RowCount = 0
Me.ColumnCount = 2
Me.Columns(0).Width = 4
Me.Columns(0).ColumnStyle = ColumnStyle.FixedWidth
Me.Columns(1).ColumnStyle = ColumnStyle.AutoWidth
Me.CellFrameStyle = CellFrameStyle.None
Me.ImageAlign = ImageAlign.MiddleRight
Me.CaptionHeight = 6
Me.CaptionFormat.Alignment = StringAlignment.Center
Me.CaptionFormat.FormatFlags = StringFormatFlags.NoClip
Me.CaptionFormat.Trimming = StringTrimming.None
Me.Caption = "Tabulka" 'the text displayed as caption of the table
End Sub
'resizes heights of caption, all rows and whole table to fit text inside cells and to fit actual width of table. Actual width of table is not changed!
Public Sub MMResizeAllToFitTable()
MMResizeWidthToFitTable()
MMResizeHeightToFitTable()
End Sub
'resizes heights of caption and all rows of the table to fit text inside them and to fit actual width of table. Actual width of table is not changed!
Public Sub MMResizeWidthToFitTable()
Dim LnNewHeight As Single
Dim LnWidth As Single
'resizing height of caption
'maxWidth parameter for MeasureString sub = actual width of caption
LnWidth = Me.Bounds.Width
LnNewHeight = Me.Parent.MeasureString(Me.Caption, Me.Font, LnWidth, Me.CaptionFormat).Height
'setting a new height or keeping minimal height of caption
Const LnMinimalCaptionHeight As Single = 6
Me.CaptionHeight = IIf(LnNewHeight > LnMinimalCaptionHeight, LnNewHeight, LnMinimalCaptionHeight)
'resizing heights of all rows
'maxWidth parameter for MeasureString sub = actual width of Columns(1)
LnWidth = Me.Columns(1).Width
For LiI As Integer = 0 To Me.RowCount - 1
'calculating new height of row
LnNewHeight = Me.Parent.MeasureString(Me(1, LiI).Text, Me.Font, LnWidth, Me(1, LiI).TextFormat).Height
'setting a new height or keeping minimal height of rows (Me.RowHeight)
Dim LnMinimalRowHeight As Single = Me.RowHeight
Me.Rows(LiI).Height = IIf(LnNewHeight > LnMinimalRowHeight, LnNewHeight, LnMinimalRowHeight)
Next
End Sub
'resizes height of whole table. Actual width of table is not changed!
Public Sub MMResizeHeightToFitTable()
'Me.Columns(1).ColumnStyle = ColumnStyle.FixedWidth
Dim LiNewHeight As Integer = Me.CaptionHeight + Constants.GetPixel(Me.Parent.MeasureUnit) + 3 * Me.Pen.Width
For Each LoRow As TableNode.Row In Me.Rows
LiNewHeight += LoRow.Height
Me.Resize(Me.Bounds.Width, LiNewHeight)
Next
End Sub