Class

StyledText


Description

Used to managed styled text independently of its display in a TextArea. For a TextArea, you can access the properties and methods of this class via the StyledText property of that class.

Properties

Name

Type

Read-Only

Shared

RTFData

String

Methods

Name

Parameters

Returns

Shared

AddStyleRun

Run As StyleRun

AddStyleRunAt

Run As StyleRun, Index As Integer

Bold

Start As Integer, Length As Integer

Boolean

FontName

Start As Integer, Length As Integer

String

Italic

Start As Integer, Length As Integer

Boolean

Paragraph

Index As Integer

Paragraph

ParagraphCount

Integer

ParagraphTextAlignment

Index As Integer

TextAlignments

RemoveStyleRunAt

Index As Integer

Size

Start As Integer, Length As Integer

Integer

StyleRun

Index As Integer

StyleRun

StyleRunCount

Integer

StyleRunRange

Index As Integer

Range

Text

String

TextColor

Start As Integer, Length As Integer

Color

Underline

Start As Integer, Length As Integer

Boolean

Property descriptions


StyledText.RTFData

RTFData As String

The styled text managed by the StyledText object in RTF format.

This property supports cross-platform RTF generation and parsing. The RTF parser supports only the features found in the StyledText class.

This example saves as RTF using the code snippet after the method that creates the StyleRuns.

Var f As FolderItem = FolderItem.ShowSaveFileDialog(TextTypes.TextRtf, "TestSaveRTF")

If f <> Nil Then
  Var s As TextOutputStream = TextOutputStream.Create(f)
  s.Write(TextArea1.StyledText.RTFData)
  s.Close
End If

Method descriptions


StyledText.AddStyleRun

AddStyleRun(Run As StyleRun)

Adds the StyleRun passed to the end of Text.

This example uses a StyleRun that is displayed in another TextArea and appends it to the StyledText that is displayed in another TextArea.

TextArea2.StyledText.AddStyleRun(TextArea1.StyledText.StyleRun(0))

StyledText.AddStyleRunAt

AddStyleRunAt(Run As StyleRun, Index As Integer)

Adds the StyleRun passed at the insertion point designated by Index.

You can get the total number of StyleRuns in Text from the StyleRunCount method.

This example appends a StyleRun into a TextArea and then inserts another one in an earlier position.

TextArea2.StyledText.AddStyleRunAt(TextArea1.StyledText.StyleRun(1))
TextArea2.StyledText.AddStyleRunAt(TextArea1.StyledText.Stylerun(0), 1)

StyledText.Bold

Bold(Start As Integer, Length As Integer) As Boolean

Gets or sets the Bold style to the selected text in Text.

Start is the starting position in Text. Start starts at zero. The default value for Length is 1. Returns a Boolean. Use assignment syntax to set the value.

Bold some text in a TextArea:

TextArea1.StyledText.Text = "Hello, World!"
TextArea1.StyledText.Bold(7, 5) = True ' "World" is now bold

StyledText.FontName

FontName(Start As Integer, Length As Integer) As String

Gets or sets the font for the selected text in Text.

Start is the starting position in Text (0-based). The default value for Length is 1. Returns a String. Use assignment syntax to set the value.

Note

On macOS, if Start + Length is greater than the Length of the String, then an OutOfBoundsException is raised. On other platforms, the change will apply to the end of the string.

Change the font for some text in a TextArea:

TextArea1.StyledText.Text = "Hello, World!"
TextArea1.StyledText.FontName(7, 5) = "Courier"

StyledText.Italic

Italic(Start As Integer, Length As Integer) As Boolean

Gets or sets the Italic style to the selected text in Text.

Start is the starting position in Text. The default value for Length is 1. Returns a Boolean. Use assignment syntax to set the value.

Italic some text in a TextArea:

TextArea1.StyledText.Text = "Hello, World!"
TextArea1.StyledText.Italic(7, 5) = True ' "World" is now italic

StyledText.Paragraph

Paragraph(Index As Integer) As Paragraph

Returns as a Paragraph the paragraph in Text indicated by Index.

The properties of the Paragraph class enable you to access its position and alignment.


StyledText.ParagraphCount

ParagraphCount As Integer

Returns as an Integer the number of paragraphs in Text.

Completely empty paragraphs (e.g., blank lines) do not count as paragraphs.


StyledText.ParagraphTextAlignment

ParagraphTextAlignment(Index As Integer) As TextAlignments

Aligns the paragraph indicated by Index.

Assign an alignment to ParagraphTextAlignment using one of the TextAlignments values.

Not supported with Linux TextFields.


StyledText.RemoveStyleRunAt

RemoveStyleRunAt(Index As Integer)

Removes the StyleRun indicated by Index.

You can get the total number of StyleRuns in Text from the StyleRunCount method.

This example removes StyleRun 3.

TextArea1.StyledText.RemoveStyleRunAt(3)

StyledText.Size

Size(Start As Integer, Length As Integer) As Integer

Gets or sets the font size for the selected text in Text.

Start is the starting position in Text. The default value for Length is 1. Returns an Integer. Use assignment syntax to set the value.

Change size of text in a TextArea:

TextArea1.StyledText.Text = "Hello, World!"
TextArea1.StyledText.Size(7, 5) = 32 ' "World" is now 32 point

StyledText.StyleRun

StyleRun(Index As Integer) As StyleRun

Returns a StyleRun specified by Index. Index is zero-based.


StyledText.StyleRunCount

StyleRunCount As Integer

Returns as an Integer the number of style runs in Text.

Use this in conjunction with the StyleRun and StyleRunRange methods to get information about each style run.


StyledText.StyleRunRange

StyleRunRange(Index As Integer) As Range

Returns a Range for the specified StyleRun. Index is zero-based.

Properties of the Range class give you access to the StyleRun's starting and ending positions, and length.

The following example loops through the StyleRuns in a block of StyledText that is displayed in a TextArea. It uses the StartPos and Length properties of the Range class to get the position of each StyleRun and displays it and the text of each StyleRun in a ListBox.

Var count As Integer = TextArea1.StyledText.StyleRunCount ' get the number of StyleRuns

For i As Integer = 0 To count - 1  ' loop through them
  ListBox1.AddRow(TextArea1.StyledText.StyleRunRange(i).StartPos.ToString)
  ListBox1.CellTextAt(i, 1) = TextArea1.StyledText.StyleRunRange(i).Length.ToString
  ListBox1.CellTextAt(i, 2) = TextArea1.StyledText.StyleRun(i).Text
Next

StyledText.Text

Text As String

The text whose style attributes are managed via the instance of this class.

The Start and Index parameters of the methods of this class are zero-based and referenced from the start of Text. Set the value of Text using the assignment operator.

Setting the Text property clears any previously set style information. If you want to modify text inline without changing the style you will need to use the StyleRuns, adding and removing them as necessary.

Add some styled text to a TextArea:

TextArea1.StyledText.Text = "Hello, World!"
TextArea1.StyledText.Bold(7, 5) = True ' "World" is now bold

StyledText.TextColor

TextColor(Start As Integer, Length As Integer) As Color

Gets or sets the text color for the selected text in Text.

Start is the starting position in Text. The default value for Length is 1. Returns a Color. Use assignment syntax to set the value.

Bold some text in a TextArea:

TextArea1.StyledText.Text = "Hello, World!"
TextArea1.StyledText.TextColor(7, 5) = &cff0000 ' "World" is now red

StyledText.Underline

Underline(Start As Integer, Length As Integer) As Boolean

Gets or sets the Underline style to the selected text in Text.

Start is the starting position in Text. The default value for Length is 1. Returns a Boolean. Use assignment syntax to set the value.

Underline some text in a TextArea:

TextArea1.StyledText.Text = "Hello, World!"
TextArea1.StyledText.Underline(7, 5) = True ' "World" is now underline

Notes

The StyledText class enables you to apply style attributes to the StyledText class. This means that obtaining a StyleRun (using StyleRun()) and setting the style attributes for that run will not be reflected in the TextArea. To operate on a StyleRun, you must remove the old run and replace it with the new run. The preferred way to do it would be to make changes using the StyledText methods instead of the StyleRun properties.

Because the TextArea already has selection style attributes, the StyledText class honors that information. This means that you can set the style information using the selection methods that are available within the TextArea class, and they will be reflected when getting StyleRun information (and vice versa).

Sample code

The following example uses the methods of the StyledText class to mark up and align text and display it in a TextArea. In order for the styled text to display, you must turn on the Multiline and Styled properties of the TextArea (both are on by default).

Var txt As String ' text to be displayed in TextArea
Var st, ln As Integer ' start and length values of a paragraph

' define four paragraphs in Text
txt = "This is the text that we are going to save " _
  + "into our file from the TextArea." + EndOfLine _
  + "Isn't that interesting?" + EndOfLine _
  + "Man, I sure do love using Xojo to take care of my projects."

TextArea1.StyledText.Text = txt ' four paragraphs in Text
TextArea1.StyledText.Bold(5, 2) = True
TextArea1.StyledText.TextColor(5, 2) = &cFF0000 ' bold and red
TextArea1.StyledText.Size(7, 10) = 16
TextArea1.StyledText.Underline(12, 4) = True ' 16 pt underline
TextArea1.StyledText.Size(100, 4) = 18
TextArea1.StyledText.TextColor(100, 4) = &cFF00FF ' 18 pt and Magenta
TextArea1.StyledText.Font(0, txt.Length) = "Comic Sans MS"

' center align second paragraph
TextArea1.StyledText.ParagraphTextAlignment(1) = TextAlignments.Center

' set this paragraph in Helvetica, 18 pt bold, red
' first get the start and length values for this paragraph...
st = TextArea1.StyledText.Paragraph(1).StartPosition
ln = TextArea1.StyledText.Paragraph(1).Length + 1

' next apply attributes...
TextArea1.StyledText.Bold(st, ln) = True
TextArea1.StyledText.Font(st, ln) = "Helvetica"
TextArea1.StyledText.Size(st, ln) = 18
TextArea1.StyledText.TextColor(st, ln) = &cFF0000

The resulting text area looks like this:

../../_images/styledtext_styled_text_output.png

The following code, added to the end of the previous method, saves the styled text to disk in RTF format. It assumes that the File Type Set, "TextTypes" has one item, TextRTF, that defines the RTF file type.

Var f As FolderItem = FolderItem.ShowSaveFileDialog(TextTypes.TextRtf, "TestSaveRTF")

If f <> Nil Then
  Var s As TextOutputStream = TextOutputStream.Create(f)
  s.Write(TextArea1.StyledText.RTFData)
End If

Compatibility

All project types on all supported operating systems.

See also

Object parent class; Paragraph, Range, StyleRun, DesktopTextArea classes.