查看源码 wxTextCtrl (wx v2.4.3)

文本控件允许显示和编辑文本。

它可以是单行或多行的。请注意,文本控件的许多方法都可以在基本 wxTextEntry (在 wx 中未实现)类中找到,该类是 wxTextCtrl 和其他使用单行文本输入字段的控件(例如 wxComboBox)的公共基类。

样式

此类支持以下样式

  • wxTE_PROCESS_ENTER: 该控件将生成事件 wxEVT_TEXT_ENTER,该事件可以由程序处理。否则,如果根本没有指定此样式,或者使用了此样式,但是没有此事件的事件处理程序,或者事件处理程序调用 wxEvent:skip/2 以避免覆盖默认处理,则按 Enter 键要么由控件内部处理,要么用于激活对话框的默认按钮(如果有)。

  • wxTE_PROCESS_TAB: 通常,TAB 键用于键盘导航,在控件中按 TAB 键会将焦点切换到下一个控件。使用此样式,这种情况不会发生,并且如果 TAB 没有被其他方式处理(例如,通过 wxEVT_CHAR 事件处理程序),则会将文字 TAB 字符插入到控件中。请注意,在使用 wxGTK 时,此样式对单行文本控件无效。

  • wxTE_MULTILINE: 文本控件允许多行。如果未指定此样式,则不应在控件值中使用换行符。

  • wxTE_PASSWORD: 文本将回显为星号。

  • wxTE_READONLY: 文本将不可由用户编辑。

  • wxTE_RICH: 在 MSW 下使用富文本控件,这允许控件中包含超过 64KB 的文本。此样式在其他平台下将被忽略。

  • wxTE_RICH2: 在 MSW 下使用富文本控件 2.0 或更高版本,此样式在其他平台下将被忽略

  • wxTE_AUTO_URL: 高亮显示 URL,并在鼠标事件发生在它们之上时生成 wxTextUrlEvents。

  • wxTE_NOHIDESEL: 默认情况下,Windows 文本控件在没有焦点时不会显示所选内容 - 使用此样式强制它始终显示。它在其他平台下不起任何作用。

  • wxHSCROLL: 将创建并使用水平滚动条,以便文本不会换行。在 wxGTK1 下无效。

  • wxTE_NO_VSCROLL: 仅适用于多行控件:永远不会创建垂直滚动条。这会将可以输入到控件中的文本量限制为在 wxMSW 下可以显示的内容,但在 wxGTK 或 wxOSX 下则不会。目前尚未为其他平台实现。

  • wxTE_LEFT: 控件中的文本将左对齐(默认)。

  • wxTE_CENTRE: 控件中的文本将居中(wxMSW、wxGTK、wxOSX)。

  • wxTE_RIGHT: 控件中的文本将右对齐(wxMSW、wxGTK、wxOSX)。

  • wxTE_DONTWRAP: 与 wxHSCROLL 样式相同:完全不换行,而是显示水平滚动条。

  • wxTE_CHARWRAP: 仅适用于多行控件:在任何位置都将过长的行换行显示(wxUniv、wxGTK、wxOSX)。

  • wxTE_WORDWRAP: 仅适用于多行控件:在单词边界处换行显示过长的行(wxUniv、wxMSW、wxGTK、wxOSX)。

  • wxTE_BESTWRAP: 仅适用于多行控件:在单词边界处或当单词长度超过窗口宽度时在任何其他字符处换行显示行(这是默认值)。

  • wxTE_CAPITALIZE: 在 PocketPC 和 Smartphone 上,导致首字母大写。请注意,在 wxMSW、wxGTK 和 wxOSX 上,对齐样式(wxTE_LEFT、wxTE_CENTRE 和 wxTE_RIGHT)可以在控件创建后动态更改。wxTE_READONLY、wxTE_PASSWORD 和换行样式可以在 wxGTK 下动态更改,但不能在 wxMSW 下动态更改。其他样式只能在控件创建期间设置。

wxTextCtrl 文本格式

多行文本控件始终将文本存储为由 '\n' 字符分隔的行序列,即即使在非 Unix 平台上也采用 Unix 文本格式。这允许用户代码忽略平台之间的差异,但代价是:控件中的索引(例如由 getInsertionPoint/1getSelection/1 返回的索引)不能用作由 getValue/1 返回的字符串中的索引,因为对于使用 "\\r\\n" 作为分隔符的平台(如 Windows)它们会略有偏差。

相反,如果您需要获取从控件获得的两个索引之间的子字符串,并借助上述函数,则应使用 getRange/3。并且索引本身只能传递给其他方法,例如 setInsertionPoint/2setSelection/3

总结:永远不要将(多行)wxTextCtrl 返回的索引用作它包含的字符串的索引,而只能用作传递回其他 wxTextCtrl 方法的参数。但是,对于控件中的索引与值字符串中的位置相对应的单行平台,不会出现此问题。

wxTextCtrl 位置和坐标

可以使用线性位置,即(大致但 总是精确地,如上一节所述)控件中包含的文本中字符的索引或 X-Y 坐标,即使用此类时字符的列和行,它提供了函数 positionToXY/2xYToPosition/3 在两者之间进行转换。

此外,可以使用 PositionToCoords()(在 wx 中未实现)将控件中的位置转换为以像素为单位的坐标,这对于例如在给定字符附近显示弹出菜单很有用。并且,在另一个方向上,可以使用 HitTest()(在 wx 中未实现)查找给定像素坐标下或附近的字符。

更准确地说,位置实际上是指字符之间的间隔,而不是字符本身。因此,位置 0 是控件中第一个字符之前的那个位置,因此即使控件为空,它也是有效位置。如果控件包含单个字符,则它有两个有效位置:此字符之前的 0 和它之后的 1。因此,当各种函数的文档提到“无效位置”时,它并不认为行中最后一个字符之后的位置无效,只有超出该位置的位置(例如,在单个字符示例中为 2 及更大的位置)才是真正无效的。

wxTextCtrl 样式。

多行文本控件支持样式,即提供为其中的各个字符设置颜色和字体的可能性(请注意,在 Windows 下,样式支持需要 wxTE_RICH 样式)。要使用样式,您可以在插入文本之前调用 setDefaultStyle/2,或者稍后调用 setStyle/4 来更改控件中已有的文本的样式(第一种解决方案效率更高)。

在任何一种情况下,如果样式没有指定某些属性(例如,您只想设置文本颜色,而不更改字体或文本背景),则默认样式的值将用于这些属性。如果没有默认样式,则使用文本控件本身的属性。

因此,以下代码正确描述了它的作用:第二次调用 setDefaultStyle/2 不会更改文本前景色(保持红色),而最后一次调用不会更改背景色(保持灰色)

wxTextCtrl 和 C++ 流

此类多重继承自 std::streambuf (除了某些使用非标准 iostream 库的非常旧的编译器),允许以下代码

请注意,即使您的 wxWidgets 构建不支持此功能(符号 wxHAS_TEXT_WINDOW_STREAM 的值为 0),您仍然可以以类似流的方式使用 wxTextCtrl 本身

但是,如果您需要将采用 std::ostream 作为参数的函数的输出重定向到文本控件,则可以创建与 wxTextCtrl 关联的 std::ostream

另一个常见的请求是将 std::cout 重定向到文本控件。这可以通过以下方式完成

但是,wxWidgets 提供了一个方便的类,使其更加简单,因此您可以这样做

有关更多详细信息,请参阅 wxStreamToTextRedirector (在 wx 中未实现)。

事件处理。

以下命令由 wxTextCtrl 中的默认事件处理程序处理:wxID_CUTwxID_COPYwxID_PASTEwxID_UNDOwxID_REDO。当控件具有焦点时,关联的 UI 更新事件也会自动处理。

请参阅:create/4

此类派生自以下类,并且可以使用以下类中的函数

wxWidgets 文档:wxTextCtrl

事件

此类发出的事件类型

摘要

函数

将文本追加到文本控件的末尾。

如果可以将所选内容复制到剪贴板,则返回 true。

如果可以将所选内容剪切到剪贴板,则返回 true。

如果可以将剪贴板的内容粘贴到文本控件中,则返回 true。

如果有可用的重做功能并且可以重做上次操作,则返回 true。

如果有可用的撤消功能并且可以撤消上次操作,则返回 true。

设置新的文本控件值。

清除控件中的文本。

将所选文本复制到剪贴板。

为两步构建创建文本控件。

将所选文本复制到剪贴板并将其从控件中删除。

销毁对象

重置内部修改标志,就像当前更改已保存一样。

此函数将字符插入到控件中,如果给定的按键事件发生在文本控件中,则会插入该字符。

返回当前用于新文本的样式。

返回插入点或光标位置。

返回文本控件中最后一个位置的从零开始的索引,该索引等于控件中的字符数。

获取指定行的长度,不包括任何尾随换行符。

返回文本控件中给定行的内容,不包括任何尾随换行符。

返回文本控件缓冲区中的行数。

返回一个字符串,其中包含控件中从位置 from 开始到位置 to 结束的文本。

获取当前选择的范围。

获取控件中当前选中的文本。

返回文本控件中此位置的样式。

获取控件的内容。

如果控件的内容可以由用户编辑(请注意,它始终可以通过程序更改),则返回 true。

如果文本已被用户修改,则返回 true。

如果这是一个多行编辑控件,则返回 true;否则返回 false。

如果这是一个单行编辑控件,则返回 true;否则返回 false。

加载并显示指定的文件(如果存在)。

将文本标记为已修改(脏)。

默认构造函数。

构造函数,创建并显示一个文本控件。

将剪贴板中的文本粘贴到文本项。

将给定的位置转换为从零开始的列和行号对。

如果有重做功能,并且可以重做上一次操作,则重做上一次操作。

删除从第一个给定位置开始到最后一个位置的字符(但不包括)之间的文本。

用给定的文本替换从第一个位置开始到最后一个位置的字符(但不包括)之间的文本。

将控件的内容保存在文本文件中。

更改将要添加到控件的新文本的默认样式。

使文本项可编辑或只读,覆盖 wxTE_READONLY 标志。

将插入点设置在给定位置。

将插入点设置在文本控件的末尾。

此函数设置用户可以输入到控件中的最大字符数。

选择从第一个位置开始到最后一个位置的字符(但不包括)之间的文本。

更改给定范围的样式。

设置新的文本控件值。

showPosition(This, Pos)

如果有撤消功能,并且可以撤消上一次操作,则撤消上一次操作。

将文本写入文本控件的当前插入位置。

将给定的从零开始的列和行号转换为位置。

类型

-type wxTextCtrl() :: wx:wx_object().

函数

此函数的链接

appendText(This, Text)

查看源代码
-spec appendText(This, Text) -> ok when This :: wxTextCtrl(), Text :: unicode:chardata().

将文本追加到文本控件的末尾。

备注:在附加文本后,插入点将位于文本控件的末尾。如果不需要此行为,程序员应使用 getInsertionPoint/1setInsertionPoint/2

参见:writeText/2

-spec canCopy(This) -> boolean() when This :: wxTextCtrl().

如果可以将所选内容复制到剪贴板,则返回 true。

-spec canCut(This) -> boolean() when This :: wxTextCtrl().

如果可以将所选内容剪切到剪贴板,则返回 true。

-spec canPaste(This) -> boolean() when This :: wxTextCtrl().

如果可以将剪贴板的内容粘贴到文本控件中,则返回 true。

在某些平台(Motif,GTK)上,这是一个近似值,如果控件可编辑则返回 true,否则返回 false。

-spec canRedo(This) -> boolean() when This :: wxTextCtrl().

如果有可用的重做功能并且可以重做上次操作,则返回 true。

-spec canUndo(This) -> boolean() when This :: wxTextCtrl().

如果有可用的撤消功能并且可以撤消上次操作,则返回 true。

此函数的链接

changeValue(This, Value)

查看源代码
-spec changeValue(This, Value) -> ok when This :: wxTextCtrl(), Value :: unicode:chardata().

设置新的文本控件值。

它还将控件标记为未修改,这意味着在调用 changeValue/2 后,IsModified() 将立即返回 false。

此函数将插入点设置为控件的开头(即位置 0)。

此函数不会生成 wxEVT_TEXT 事件,但除此之外,它与 setValue/2 相同。

有关更多信息,请参见 overview_events_prog。

自:2.7.1

-spec clear(This) -> ok when This :: wxTextCtrl().

清除控件中的文本。

请注意,此函数将生成一个 wxEVT_TEXT 事件,即其效果与调用 SetValue("") 相同。

-spec copy(This) -> ok when This :: wxTextCtrl().

将所选文本复制到剪贴板。

此函数的链接

create(This, Parent, Id)

查看源代码
-spec create(This, Parent, Id) -> boolean()
                when This :: wxTextCtrl(), Parent :: wxWindow:wxWindow(), Id :: integer().

等效于 create(This, Parent, Id, [])

-spec create(This, Parent, Id, [Option]) -> boolean()
                when
                    This :: wxTextCtrl(),
                    Parent :: wxWindow:wxWindow(),
                    Id :: integer(),
                    Option ::
                        {value, unicode:chardata()} |
                        {pos, {X :: integer(), Y :: integer()}} |
                        {size, {W :: integer(), H :: integer()}} |
                        {style, integer()} |
                        {validator, wx:wx_object()}.

为两步构建创建文本控件。

如果控件的创建使用了默认构造函数,则应调用此方法。其参数的含义与非默认构造函数相同。

-spec cut(This) -> ok when This :: wxTextCtrl().

将所选文本复制到剪贴板并将其从控件中删除。

-spec destroy(This :: wxTextCtrl()) -> ok.

销毁对象

-spec discardEdits(This) -> ok when This :: wxTextCtrl().

重置内部修改标志,就像当前更改已保存一样。

此函数的链接

emulateKeyPress(This, Event)

查看源代码
-spec emulateKeyPress(This, Event) -> boolean()
                         when This :: wxTextCtrl(), Event :: wxKeyEvent:wxKeyEvent().

此函数将字符插入到控件中,如果给定的按键事件发生在文本控件中,则会插入该字符。

event 对象应与 wxWidgets 先前传递给 EVT_KEY_DOWN 处理程序的 event 对象相同。请注意,此函数目前并非在所有平台下对所有键都正确工作,但 MSW 除外。

返回:如果事件导致控件发生更改,则返回 true;否则返回 false。

-spec getDefaultStyle(This) -> wxTextAttr:wxTextAttr() when This :: wxTextCtrl().

返回当前用于新文本的样式。

参见:setDefaultStyle/2

此函数的链接

getInsertionPoint(This)

查看源代码
-spec getInsertionPoint(This) -> integer() when This :: wxTextCtrl().

返回插入点或光标位置。

这被定义为插入点右侧字符位置的从零开始的索引。例如,如果插入点位于单行文本控件的末尾,则它等于 getLastPosition/1

请注意,插入位置通常与 getValue/1 返回的字符串中光标所在字符的索引不同。虽然这始终是单行控件的情况,但多行控件可以使用两个字符 "\\r\\n" 作为行分隔符(这在 MSW 下尤其如此),这意味着控件中的索引及其字符串值对于每一行都偏移 1。

因此,要正确获取当前光标位置的字符,考虑到如果光标位于字符串的末尾则可能没有字符,您可以执行以下操作

-spec getLastPosition(This) -> integer() when This :: wxTextCtrl().

返回文本控件中最后一个位置的从零开始的索引,该索引等于控件中的字符数。

此函数的链接

getLineLength(This, LineNo)

查看源代码
-spec getLineLength(This, LineNo) -> integer() when This :: wxTextCtrl(), LineNo :: integer().

获取指定行的长度,不包括任何尾随换行符。

返回:行的长度,如果 lineNo 无效,则返回 -1。

此函数的链接

getLineText(This, LineNo)

查看源代码
-spec getLineText(This, LineNo) -> unicode:charlist() when This :: wxTextCtrl(), LineNo :: integer().

返回文本控件中给定行的内容,不包括任何尾随换行符。

返回:行的内容。

此函数的链接

getNumberOfLines(This)

查看源代码
-spec getNumberOfLines(This) -> integer() when This :: wxTextCtrl().

返回文本控件缓冲区中的行数。

返回的数字是逻辑行数,即控件中换行符的数量 + 1 的计数,对于 wxGTK 和 wxOSX/Cocoa 端口,它是物理行数,即控件中实际显示的行数的计数,在 wxMSW 中。由于这种差异,不建议使用此函数。

备注:请注意,即使是空的文本控件也有一行(插入点所在的位置),因此 getNumberOfLines/1 永远不会返回 0。

此函数的链接

getRange(This, From, To)

查看源代码
-spec getRange(This, From, To) -> unicode:charlist()
                  when This :: wxTextCtrl(), From :: integer(), To :: integer().

返回一个字符串,其中包含控件中从位置 from 开始到位置 to 结束的文本。

这些位置必须由另一个 wxTextCtrl 方法返回。请注意,多行 wxTextCtrl 中的位置与 getValue/1 返回的字符串中的索引 对应,因为不同的换行符表示 (CRCR LF),因此应使用此方法来获取正确的结果,而不是提取整个值的部分。它也可能更有效,尤其是在控件包含大量数据时。

-spec getSelection(This) -> {From :: integer(), To :: integer()} when This :: wxTextCtrl().

获取当前选择的范围。

如果返回的值相等,则没有选择。请注意,返回的索引可以与其他 wxTextCtrl 方法一起使用,但对于 Windows (至少) 下的多行控件,并不一定代表 getValue/1 返回的字符串中的正确索引,您应该使用 getStringSelection/1 获取选定的文本。

此函数的链接

getStringSelection(This)

查看源代码
-spec getStringSelection(This) -> unicode:charlist() when This :: wxTextCtrl().

获取控件中当前选中的文本。

如果没有选择,则返回的字符串为空。

此函数的链接

getStyle(This, Position, Style)

查看源代码
-spec getStyle(This, Position, Style) -> boolean()
                  when This :: wxTextCtrl(), Position :: integer(), Style :: wxTextAttr:wxTextAttr().

返回文本控件中此位置的样式。

并非所有平台都支持此功能。

返回:成功则返回 true,如果发生错误则返回 false(这也可能意味着此平台不支持样式)。

参见

-spec getValue(This) -> unicode:charlist() when This :: wxTextCtrl().

获取控件的内容。

请注意,对于多行文本控件,行将由 (Unix 样式) \n 字符分隔,即使在 Windows 下,它们在原生控件中由 \r\n 序列分隔。

-spec isEditable(This) -> boolean() when This :: wxTextCtrl().

如果控件的内容可以由用户编辑(请注意,它始终可以通过程序更改),则返回 true。

换句话说,如果控件尚未通过先前对 setEditable/2 的调用置于只读模式,则此函数返回 true。

-spec isModified(This) -> boolean() when This :: wxTextCtrl().

如果文本已被用户修改,则返回 true。

请注意,调用 setValue/2 不会使控件修改。

参见:markDirty/1

-spec isMultiLine(This) -> boolean() when This :: wxTextCtrl().

如果这是一个多行编辑控件,则返回 true;否则返回 false。

参见:isSingleLine/1

-spec isSingleLine(This) -> boolean() when This :: wxTextCtrl().

如果这是一个单行编辑控件,则返回 true;否则返回 false。

参见

此函数的链接

loadFile(This, Filename)

查看源代码
-spec loadFile(This, Filename) -> boolean() when This :: wxTextCtrl(), Filename :: unicode:chardata().

等效于 loadFile(This, Filename, [])

-spec loadFile(This, Filename, [Option]) -> boolean()
                  when
                      This :: wxTextCtrl(),
                      Filename :: unicode:chardata(),
                      Option :: {fileType, integer()}.

加载并显示指定的文件(如果存在)。

返回:成功则返回 true,否则返回 false。

-spec markDirty(This) -> ok when This :: wxTextCtrl().

将文本标记为已修改(脏)。

参见:isModified/1

-spec new() -> wxTextCtrl().

默认构造函数。

-spec new(Parent, Id) -> wxTextCtrl() when Parent :: wxWindow:wxWindow(), Id :: integer().

等效于 new(Parent, Id, [])

-spec new(Parent, Id, [Option]) -> wxTextCtrl()
             when
                 Parent :: wxWindow:wxWindow(),
                 Id :: integer(),
                 Option ::
                     {value, unicode:chardata()} |
                     {pos, {X :: integer(), Y :: integer()}} |
                     {size, {W :: integer(), H :: integer()}} |
                     {style, integer()} |
                     {validator, wx:wx_object()}.

构造函数,创建并显示一个文本控件。

备注:水平滚动条 (wxHSCROLL 样式标志) 仅为多行文本控件创建。如果没有水平滚动条,则不适合控件大小的文本行将被换行(但不会插入换行符)。单行控件没有水平滚动条,文本会自动滚动,以便插入点始终可见。

请参阅:create/4

-spec paste(This) -> ok when This :: wxTextCtrl().

将剪贴板中的文本粘贴到文本项。

此函数的链接

positionToXY(This, Pos)

查看源代码
-spec positionToXY(This, Pos) -> Result
                      when
                          Result :: {Res :: boolean(), X :: integer(), Y :: integer()},
                          This :: wxTextCtrl(),
                          Pos :: integer().

将给定的位置转换为从零开始的列和行号对。

返回:成功则返回 true,失败则返回 false(最可能的原因是位置参数太大)。

参见:xYToPosition/3

-spec redo(This) -> ok when This :: wxTextCtrl().

如果有重做功能,并且可以重做上一次操作,则重做上一次操作。

如果没有重做功能,则不执行任何操作。

此函数的链接

remove(This, From, To)

查看源代码
-spec remove(This, From, To) -> ok when This :: wxTextCtrl(), From :: integer(), To :: integer().

删除从第一个给定位置开始到最后一个位置的字符(但不包括)之间的文本。

此函数将当前插入点位置设置为 to,作为副作用。

此函数的链接

replace(This, From, To, Value)

查看源代码
-spec replace(This, From, To, Value) -> ok
                 when
                     This :: wxTextCtrl(),
                     From :: integer(),
                     To :: integer(),
                     Value :: unicode:chardata().

用给定的文本替换从第一个位置开始到最后一个位置的字符(但不包括)之间的文本。

此函数将当前插入点位置设置为 to,作为副作用。

-spec saveFile(This) -> boolean() when This :: wxTextCtrl().

等效于 saveFile(This, [])

-spec saveFile(This, [Option]) -> boolean()
                  when
                      This :: wxTextCtrl(), Option :: {file, unicode:chardata()} | {fileType, integer()}.

将控件的内容保存在文本文件中。

返回:如果操作成功,则返回 true,否则返回 false。

此函数的链接

setDefaultStyle(This, Style)

查看源代码
-spec setDefaultStyle(This, Style) -> boolean()
                         when This :: wxTextCtrl(), Style :: wxTextAttr:wxTextAttr().

更改将要添加到控件的新文本的默认样式。

这适用于使用 writeText/2appendText/2 以编程方式添加的文本,以及用户以交互方式输入的文本。

如果 style 中未设置字体、前景色或背景色,则将使用先前默认样式的值。如果先前的默认样式也没有设置它们,则将使用文本控件本身的全局字体或颜色作为后备。

但是,如果 style 参数是默认的 wxTextAttr,则只会重置默认样式(而不是与根本不会更改它的新样式组合)。

返回:成功则返回 true,如果发生错误则返回 false(这也可能意味着此平台不支持样式)。

参见:getDefaultStyle/1

此函数的链接

setEditable(This, Editable)

查看源代码
-spec setEditable(This, Editable) -> ok when This :: wxTextCtrl(), Editable :: boolean().

使文本项可编辑或只读,覆盖 wxTE_READONLY 标志。

参见:isEditable/1

此函数的链接

setInsertionPoint(This, Pos)

查看源代码
-spec setInsertionPoint(This, Pos) -> ok when This :: wxTextCtrl(), Pos :: integer().

将插入点设置在给定位置。

此函数的链接

setInsertionPointEnd(This)

查看源代码
-spec setInsertionPointEnd(This) -> ok when This :: wxTextCtrl().

将插入点设置在文本控件的末尾。

这等效于使用 getLastPosition/1 参数调用 setInsertionPoint/2

此函数的链接

setMaxLength(This, Len)

查看源代码
-spec setMaxLength(This, Len) -> ok when This :: wxTextCtrl(), Len :: integer().

此函数设置用户可以输入到控件中的最大字符数。

换句话说,它允许将文本值的长度限制为 len,而不计算终止 NUL 字符。

如果 len 为 0,则会丢弃先前设置的最大长度限制(如果有),并且用户可以输入与底层原生文本控件小部件支持的一样多的文本(通常至少为 32Kb)。如果用户尝试在文本控件已经填充到最大长度时输入更多字符,则会发送一个 wxEVT_TEXT_MAXLEN 事件以通知程序(使其可以显示解释性消息,例如),并且会丢弃额外的输入。

请注意,在 wxGTK 中,此函数只能用于单行文本控件。

此函数的链接

setSelection(This, From, To)

查看源代码
-spec setSelection(This, From, To) -> ok when This :: wxTextCtrl(), From :: integer(), To :: integer().

选择从第一个位置开始到最后一个位置的字符(但不包括)之间的文本。

如果两个参数都等于 -1,则会选中控件中的所有文本。

请注意,此函数会将插入点移动到 from

此函数的链接

setStyle(This, Start, End, Style)

查看源代码
-spec setStyle(This, Start, End, Style) -> boolean()
                  when
                      This :: wxTextCtrl(),
                      Start :: integer(),
                      End :: integer(),
                      Style :: wxTextAttr:wxTextAttr().

更改给定范围的样式。

如果 style 中的任何属性未设置,则使用来自 getDefaultStyle/1 的相应属性。

返回:成功则返回 true,如果发生错误则返回 false(这也可能意味着此平台不支持样式)。

参见

-spec setValue(This, Value) -> ok when This :: wxTextCtrl(), Value :: unicode:chardata().

设置新的文本控件值。

它还会将控件标记为未修改状态,这意味着在调用 setValue/2 后,IsModified() 将立即返回 false。

此函数会将插入点设置为控件的开头(即位置 0),除非控件的值根本没有更改,在这种情况下,插入点将保留在其原始位置。

请注意,与大多数其他更改控件值的函数不同,此函数会生成一个 wxEVT_TEXT 事件。为了避免这种情况,您可以使用 changeValue/2 来代替。

此函数的链接

显示包含给定位置的行。

查看源代码
-spec showPosition(This, Pos) -> ok when This :: wxTextCtrl(), Pos :: integer().

showPosition(This, Pos)

-spec undo(This) -> ok when This :: wxTextCtrl().

如果有撤消功能,并且可以撤消上一次操作,则撤消上一次操作。

如果没有撤销功能,则不执行任何操作。

-spec writeText(This, Text) -> ok when This :: wxTextCtrl(), Text :: unicode:chardata().

将文本写入文本控件的当前插入位置。

备注:文本字符串中的换行符是唯一允许的控制字符,它们将导致适当的换行。有关更方便的写入窗口方式,请参阅 operator<<() 和 appendText/2。写入操作后,插入点将在插入文本的末尾,因此后续的写入操作将追加。要在用户可能与控件交互后追加文本,请在写入之前调用 setInsertionPointEnd/1

此函数的链接

xYToPosition(This, X, Y)

查看源代码
-spec xYToPosition(This, X, Y) -> integer() when This :: wxTextCtrl(), X :: integer(), Y :: integer().

将给定的从零开始的列和行号转换为位置。

返回:位置值,如果 x 或 y 无效,则返回 -1。