aardio 文档

win.ui.ctrl.richedit 库模块帮助文档

必读文档

设置文本样式

使用 COM 接口实现的 TOM 文本对象设置样式

以下是一个简单示例:

textDoc = winform.richedit.createTextDocument()
textDoc.Selection.Text = "这是红色加粗的文本"
textDoc.Selection.Font.ForeColor = gdi.RGB(255,0,0)  // 红色
textDoc.Selection.Font.Bold = textDoc.tomTrue  // 加粗

TOM 文档

使用 CHARFORMAT2 结构体设置样式

以下函数会用到 CHARFORMAT2(这里指的是 win.ui.ctrl.CHARFORMAT2 类) 结构体。

设置样式的函数可直接指定普通表参数(不需要指定全部 CHARFORMAT2 字段), aardio 会自动将这些表转换为完整的 CHARFORMAT2 结构体。 并且会自动设置 mask 字段的掩码。 在 aardio 会自动设置值,所以这个最复杂的部分可以不用管了。 所以只要字段名写对就可以了。

CHARFORMAT2 有以下字段

注意修改字体大小请在窗体显示并且 DPI 初始化缩放完成以后再设置,不然会被重复放大。 如果要在窗体显示前设置,请在设置字体大小前主动调用 winform.enableDpiScaling("init");

参考文档:

https://learn.microsoft.com/en-us/windows/win32/controls/about-rich-edit-controls https://github.com/MicrosoftDocs/win32/blob/docs/desktop-src/Controls/about-rich-edit-controls.md https://learn.microsoft.com/zh-cn/windows/win32/api/richedit/ns-richedit-charformatw https://learn.microsoft.com/zh-cn/windows/win32/api/richedit/ns-richedit-charformat2w

API 常量在 aardio 里需要在前面加一个下划线,然后利用 IDE 的自动完成可自动转换为实际的常量值。

win.ui.ctrl 成员列表

win.ui.ctrl.CHARFORMAT2()

用于创建 richedit 支持的 CHARFORMAT2 结构体。
因为 richedit 提供的函数可将样式表参数自动转换为此结构,
所以一般不需要手动创建此结构体。

注意 aardio 中的 CHARFORMAT2 结构体字段命名与 MSDN 有微小差别。

返回对象:charformat2Object

win.ui.ctrl.richedit

多功能文本框控件支持库

win.ui.ctrl.richedit()

多功能文本框控件

返回对象:richeditObject

richeditObject 成员列表

richeditObject._defWindowProc(hwnd,message,wParam,lParam)

用于在 wndproc 回调中提前调用默认消息回调函数,
所有窗口和控件定义了 wndproc 回调以后会自动创建这个函数,
调用此函数以后,wndproc 必须指定非 null 返回值,
以避免再次重复调用默认回调函数

richeditObject._parentForm

创建该控件的父窗口(win.form对象),
设计时窗体容器是所有拖放在窗体上的控件的 _parentForm,

即使窗口移除子窗口样式、更改父子关系,或以 orphanWindow显示,
控件的 _parentForm 始终都不会改变

返回对象:winform

richeditObject.addCtrl(tParam)

richeditObject.addCtrl(  
    spin={  
        cls="spin";marginRight=4;marginTop=1;marginBottom=4;width=16;  
        oncommand = function(id,event,pos){   
            if( pos & event == 0x4/*_SB_THUMBPOSITION*/ ){  
                winform.edit.text = string.format("%.2f",pos / 100 )  
            }  
        }  
    }  
)/*在edit控件窗口内添加子窗口*/

richeditObject.adjust

richeditObject.adjust = function( cx,cy,wParam ) {     
    /*窗口缩放时会自动触发此函数。  
cx 参数为窗口宽度,cy 参数为窗口高度,  
wParam 参数请参考 _WM_SIZE 消息参数说明,一般不用管。  

所有 win.form 创建的窗体和控件都支持此事件,  
重复赋值只会追加而不会覆盖此事件。  
一般不建议添加一个 wndproc 仅仅是为了处理  _WM_SIZE 消息,  
定义 adjust 事件是更好的选择。  

可主动调用此事件,省略参数时 cx,cy 参数默认设为窗口大小*/    
};

richeditObject.appendLink

在文本尾部追加超链接。
如果未定义 onHyperlink 事件,
则添加默认 onHyperlink 调用 raw.execute 函数打开链接。

此函数会自动禁用自动识别超链接功能,但不会取消之前自动识别的超链接。

richeditObject.appendLink(title,href,charFormat2)

在文本尾部追加超链接。
参数 @title 指定显示文本。
参数 @href 指定超链接或文件路径。
参数 @charFormat2 可选指定包含 win.ui.ctrl.CHARFORMAT2 部分字段的表

默认会通过插入位置获取超链接,
如果超链接位置改变而获取失败,则通过 title 指定显示名称获取链接。

richeditObject.appendText

追加文本并移动光标插入点到文本尾部。
用法细节请参考 richedit 库函数文档。

richeditObject.appendText(追加文本-..)

追加文本并移动光标插入点到文本尾部。
可指定零个、或多个参数,参数可以是字符串、buffer、数值。
如果参数是表对象,则将该表作为 setSelCharformat 的参数修改插入点样式。
如果修改字体大小请在窗体显示 DPI 缩放以后设置。
如果传入了样式参数,在函数调用结束总是会恢复为默认样式。
传入其他类型参数会抛出异常。

函数返回插入文本以后控件的文本总长度。

richeditObject.bgcolor

获取或修改背景颜色、数值

richeditObject.bottom

底部坐标

richeditObject.canCopy()

能否复制

richeditObject.canPaste()

能否粘贴

richeditObject.canRedo()

能否重做

richeditObject.canUndo()

能否撤消

richeditObject.capture

是否捕获全局鼠标消息

richeditObject.className

运行时类名

richeditObject.clear()

清除选中文本

richeditObject.close()

关闭控件窗

richeditObject.cls

设计时类名

richeditObject.color

取或修改字体颜色、数值

richeditObject.copy()

复制选区。
如果要复制全部 RTF 文档,
可用 win.clip.data("Rich Text Format") 复制

richeditObject.createTextDocument()

返回 COM 接口的TOM 文本对象

返回对象:TextDocumentObject

richeditObject.cut()

剪切选区

richeditObject.deselect()

取消选定

richeditObject.disableInputMethod()

在此控件中关闭输入法, 仅支持英文输入

richeditObject.disabled

控件时否可见

richeditObject.disabledText

当指定文本时,禁用此控件并显示指定文本。
指定为 null 时,启用此控件并恢复控件之前的正常文本。

richeditObject.dump(变量)

显示变量的值,支持多参数
注意仅显示普通table,string,number等类型的值,不显示函数等

richeditObject.enablePopMenu()

启用右键菜单

可选在参数中使用一个表指定要添加的菜单项数组,
参数将传递给win.ui.popmenu对象的addTable函数
参数也可以是返回菜单项数组的函数

richeditObject.findText

查找文本

richeditObject.findText(查找字符串,选项,开始位置,结束位置)

查找
选项可使用 win.dlg.findReplace 对象的 flags 属性,
不指定查找范围时,aardio 根据选区自动确定下次替换的范围
替换完全部文本会重新重新设置查找范围为全部文本

此函数返回2个数值,表示查找到的字符串起始、结束位置
如果参数中未指定查找位置,会自动选中查找到的字符串

richeditObject.font

控件字体(LOGFONT 结构体),
注意获取该属性总是返回新的 LOGFONT 对象,
修改返回字体并不会更新控件字体,
除非重新赋值。

建议尽量优先使用 getFont 或 setFont 函数,
以增强代码可读性

字体会根据控件设置自动处理 DPI 缩放,不需要事先缩放字体大小

richeditObject.getCharformat()

返回对象:charformat2Object

richeditObject.getCharformat(mask)

返回 win.ui.ctrl.CHARFORMAT2 结构体。
参数 @mask 指定获取字段掩码,省略获取全部值

richeditObject.getClientRect()

控件客户区块位置(::RECT结构体)

返回对象:rectObject

richeditObject.getFont()

返回控件 LOGFONT 字体,
返回对象的 h 值会按控件的 DPI 缩放设置自动还原为缩放前大小。

返回对象:logfontObject

richeditObject.getFont(true)

返回控件 LOGFONT 字体,
返回对象的 h 值为字体实际大小,不会按控件 DPI 设置还原。
返回字体会设置 noScale 属性为 true,
使用控件的 setFont 函数或赋值 font 属性时,
noScale 属性为 true 的字体同样不会进行自动 DPI 缩放

返回对象:logfontObject

richeditObject.getLength()

获取文本长度
注意是按字符计数,而不是按字节计数

richeditObject.getParent()

返回父窗口

返回对象:staticObject

richeditObject.getPos()

返回相对坐标,宽,高
x,y,cx,cy=win.getPos(hwnd)

richeditObject.getRect()

控件区块位置(::RECT结构体)

richeditObject.getRect(true)

控件屏幕区块位置(::RECT结构体)

richeditObject.getRoot()

获取顶层父窗口,这个函数会查找 orphanWindow 的父窗口

richeditObject.getSelCharformat()

返回对象:charformat2Object

richeditObject.getSelCharformat(mask)

返回选区 win.ui.ctrl.CHARFORMAT2 结构体。
参数 @mask 指定获取字段掩码,省略获取全部值

richeditObject.getsel()

获取选区起始位置,结束位置
选区包含起始与结束位置的字符,首字符位置为1
开始位置在指定的字符前面,结束位置表示指定的字符后面
只有一个返回值时表示无选区,并表示输入光标在指定字符后面
返回0表示输入光标在最前面,并且无选区

richeditObject.hScroll()

滚动到右侧

richeditObject.hScroll(_SB)

滚动横向滚动条

richeditObject.height

高度

richeditObject.hide

当前控件窗口是否隐藏。
仅检查当前窗口的可见性样式(窗口 是否移除了 _WS_VISIBLE 样式)。
不考虑父窗口是否可见,不考虑是否被其他窗口遮挡。
如果需要同时判断父窗口的可见性,应改用 win.isVisible 函数。

richeditObject.hwnd

控件句柄

richeditObject.id

控件ID

richeditObject.inflateClientRect(dx,dy)

正数增大,负数缩小文本客户区
文本框必须在设计时指定为多行
在文本框改变大小必须重新设置

richeditObject.invalidate(/*可选使用::RECT()对象指定客户区*/)

使窗口绘图区无效

richeditObject.invalidate(/*可选使用::RECT()对象指定客户区*/,0)

使窗口绘图区无效
不刷新背景

richeditObject.isDialogMessage

richeditObject.isDialogMessage = function(hParent,msg){/*在控件范围内替代父窗口的 isDialogMessage,  
可用于在控件范围内屏蔽对话框快捷键。  
可用于禁用 tab 控制键的多行文本框支持按 tab 输入制表符*/}

richeditObject.langOptions

设置输入和远东语言选项
选项为数值,使用_IMF_前缀常量表示

richeditObject.left

左侧坐标

richeditObject.limit

字符数限制

richeditObject.lineCount

获取行数

richeditObject.lineFromChar()

不指定参数则返回当前行

richeditObject.lineFromChar(指定位置)

返回指定位置行数

richeditObject.lineLength(指定行号)

返回指定行字符数
省略参数表示当前行,小于0表示自尾部倒数到指定行,-1表示最后一行

richeditObject.lineScroll(滚动到指定行)

滚动条移动到指定行
如果不指定参数则滚动到最后一行

richeditObject.lineSel(行号,替换文本)

选择指定的行的全部文本,
行号为-1时表示选取最后一行,
可选使用参数@2指定一个字符串用于替换该行文本

richeditObject.lineText()

不指定行号参数,则获取当前行文本

richeditObject.lineText(指定行号)

获取指定行文本
省略参数表示当前行,小于0表示自尾部倒数到指定行,-1表示最后一行

richeditObject.lineToChar(指定行号)

获取指定行首字符位置
省略参数表示当前行,小于0表示自尾部倒数到指定行,-1表示最后一行

richeditObject.lines(忽略空白)

for line in richeditObject.lines(true){ 
    /*遍历所有文本行,  
如果迭代器参数为true则清除每行首尾空格,并忽略空行*/
}

richeditObject.link

控件是否自动识别超链接。
启用此属性会重新设置控件文本内容并丢失选区样式。
如果未定义 onHyperlink 事件,
则添加默认 onHyperlink 调用 raw.execute 函数打开链接。

禁用此属性不会重置文本内容,之前识别的超链接不会失效。

richeditObject.load()

自参数 @1 指定的文件路径加载文本。
如果文件后缀为 .rtf 则加载 RTF 格式文本。
此函数内部调用 streamIn 函数。

richeditObject.log( ,'\r\n' )

追加字符串到文本框,可输入多个参数
如果超出limit属性设定的字符数限制则移除头部多余的字符
为提升性能,limit不可过大

richeditObject.modified

文本内容是否已修改。
修改 text 属性、以及调用 log,print 等函数不会自动变更此属性。
用户输入、selText 变更、 appendTexxt,appendLink 调用都会变更此属性为 true。

richeditObject.modifyEvent(移除通知,添加通知)

启用或禁用通知消息,返回EVENTMASK值

richeditObject.modifyStyle(remove,add,swpFlags)

修改窗口样式,所有参数都是可选参数,
@remove 用数值指定要移除的样式,可使用 WS 前缀的常量
@add 用数值指定要添加的样式,可使用 WS 前缀的常量
@swpFlags 可选用数值指定调整窗口选项,可使用 SWP 前缀的常量
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos
细节请参考 win.modifyStyle 函数源码

richeditObject.modifyStyleEx(remove,add,swpFlags)

修改窗口扩展样式,所有参数都是可选参数,
@remove 用数值指定要移除的样式,可使用 WS_EX 前缀的常量
@add 用数值指定要添加的样式,可使用 WS_EX 前缀的常量
@swpFlags 可选用数值指定调整窗口选项,可使用 SWP 前缀的常量
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos
细节请参考 win.modifyStyle 函数源码

richeditObject.onCancel()

richeditObject.onCancel = function(){ 
    /*当前已按下ESC,返回true阻止默认事件*/
    return true;    
}

richeditObject.onChange()

richeditObject.onChange = function(){ 
    if(owner.onModified)owner.onModified(true);

    owner.validateText("<\d+\.\d\d>|<\d+\.\d>|<\d+\.>|<\d+>"
        ,"请输入金额,小数点后不能超过 2 位!"); 

    /*响应事件,文本内容已变更,  
对于 richedit 修改 text 属性赋值文本会触发此事件。  
但可以通过 modified 属性判断是否由赋值 text 而触发。  
*/
}

richeditObject.onDpiFontChange

richeditObject.onDpiFontChange = function(f){  
    return owner.setFont(f);/*自定义DPI字体缩放*/  
};

richeditObject.onFocusGot()

richeditObject.onFocusGot = function(){ 
    /*响应事件,文本框已获得输入焦点*/
}

richeditObject.onFocusLost()

richeditObject.onFocusLost = function(){
    /*响应事件,文本框已失去输入焦点*/
}

richeditObject.onHyperlink

richeditObject.onHyperlink =function(message,href){  

    if( message = 0x202/*_WM_LBUTTONUP*/ ) {  
        raw.execute(href);  
    }  
}

richeditObject.onModified

richeditObject.onModified = function(modified){ 
    /*使用代码变更modified属性后触发此事件,  
用户编辑文本导致变更modified属性不会触发此事件,  
可在onChange事件内主动调用此事件*/
}

richeditObject.onOk()

richeditObject.onOk = function(){ 
    /*当前已按下回车,返回true阻止默认事件*/
    return true;    
}

richeditObject.onProtected

richeditObject.onProtected = function(b,e,message){ 
    /*修改保护样式文本触发此事件。  
b,e 为被修改的选区,message 为触发消息。  
返回 true 禁止修改*/
    return true;    
}

richeditObject.orphanWindow(transparent,hwndBuddy,borderless)

创建悬浮窗口。
悬浮窗口是模仿子窗口外观效果的独立窗口,父窗口可自动调整子窗口到设定位置。
可选参数 @transparent 为 true 则转换为分层透明窗口。
可选利用 @hwndBuddy 参数指定外部进程窗口句柄的并附加在内部控件上以实现相同的效果。
伙伴窗口总是会保持在悬浮窗口前面,并保持相同的大小、位置。
可重复调用此函数更换伙伴窗口,旧的伙伴窗口必须自行关闭。
可选指定 @borderless 参数 为 true 以移除 @hwndBuddy 的窗口边框。

richeditObject.padding

文本边距
应通过setPadding函数设置该值

richeditObject.passwordChar

指定隐藏密码的占位字符,该字符使用UTF-16编码,
例如指定为'*'u隐藏密码,指定为null正常显示文本

richeditObject.paste()

粘贴

richeditObject.popMenu()

弹出右键菜单

richeditObject.postMessage(msg,wParam,lParam)

投递窗口消息到消息队列中
此函数用法请参考 ::User32.PostMessage

richeditObject.preadjust

richeditObject.preadjust = function( cx,cy,wParam ) {      
    /*窗口缩放后重绘前、触发 adjust 事件之前触发此事件。  
所有 win.form 创建的窗体和控件都支持此事件,  
与 adjust 事件不同,对 preadjust 重复赋值则覆盖而不是追加事件。   

cx 参数为窗口宽度,cy 参数为窗口高度,  
wParam 为 _WM_SIZE 消息参数。*/    
};

richeditObject.print(...)

将多个参数转换为字符串,
并使用制表符分隔各参数追加到文本尾部
并追加换行

对于table对象,aardio会序列化为文本然后输出,
如果当前已经导入了web.json,则自动转换为json后输出,
可以用于调试代码显示变量的值

richeditObject.printf(...)

将多个参数调用string.format格式化后追加到文本尾部
并追加换行

richeditObject.publish("字符串参数",)

在窗口所在界面线程发布消息,
运行界面线程所有所有调用subscribe函数订阅此消息的函数,
可添加任意个触发参数

richeditObject.rangeText(起始位置,结束位置)

返回指定位置文本
1表示首字符

richeditObject.readonly

是否只读
只读时禁止编辑

richeditObject.redo()

重做

richeditObject.redraw()

刷新

richeditObject.replaceAll

全部替换查找到的文本

richeditObject.replaceAll(查找字符串,替换字符串,选项)

全部替换查找到的文本
选项可使用win.dlg.findReplace对象的flags属性

richeditObject.replaceText

替换替换文本

richeditObject.replaceText(查找字符串,替换字符串,选项,开始位置,结束位置)

替换当前选区并查找下一个,
选项可使用 win.dlg.findReplace 对象的 flags 属性,
不指定查找范围时,aardio 根据选区自动确定下次替换的范围
替换完全部文本会重新重新设置查找范围为全部文本,
此函数返回2个数值,表示下一个找到的字符串起始、结束位置

richeditObject.resize(宽度,高度)

如果指定了参数则调整窗口大小,
无论是否实际调整窗口大小,发送 _WM_SIZE 消息给窗口

richeditObject.right

右侧坐标

richeditObject.rtf

获取或写入 RTF 格式文本。
读写此属性会自动转换为调用 streamIn,streamOut 函数。

richeditObject.save()

保存控件文本到参数 @1 指定的文件路径。
如果文件后缀为 .rtf 则保存 RTF 格式文本。
此函数内部调用 streamOut 函数。

richeditObject.saveScale(scaleX,scaleY,dpiScaleX,dpiScaleY)

根据控件当前的运行时位置更新设计时大小\如果控件允许自动缩放,窗口缩放时依据设计时大小按比例缩放
所有参数可省略,并且不建议写参数

richeditObject.scrollCaret()

滚动到光标处

richeditObject.selLine

获取或设置当前行,
光标移动到该行开始处,并且滚动到该行,
设为-1跳转到最后一行

richeditObject.selText

获取或写入选区文本
可写入UTF8或UTF16字符串,其他类型转为字符串写入

richeditObject.selectAll()

全选

richeditObject.sendMessage(msg,wParam,lParam)

发送窗口消息
此函数用法请参考 ::User32.SendMessage

richeditObject.setCharformat

修改样式,
如果修改字体大小请在窗体显示 DPI 缩放以后设置。
用法细节请参考 richedit 库函数文档。

richeditObject.setCharformat(charformat2,wParam)

参数 @charformat2 使用 win.ui.ctrl.CHARFORMAT2 结构体设置文本样式,
可仅指定部分字段
wParam可省略,可选值参考EM_SETCHARFORMAT消息。\例如修改字体颜色可传入 {textColor=0x00ff00}

richeditObject.setClientRect(RECT区块)

参数为指定文本客户区的RECT结构体
文本框必须在设计时指定为多行
在文本框改变大小必须重新设置

richeditObject.setFocus()

设置焦点

richeditObject.setFont(指定字体)

指定 LOGFONT 字体对象,或逻辑字体句柄
如果不指定 point 值并指定 h 值,字体会按控件的 DPI 缩放设置自动缩放。

richeditObject.setFont(混入字体属性)

richeditObject.setFont(h=-12;name="Tahoma");

richeditObject.setLink

设置当前选区为超链接。
如果未定义 onHyperlink 事件,
则添加默认 onHyperlink 调用 raw.execute 函数打开链接。

此函数会自动禁用自动识别超链接功能,但不会取消之前自动识别的超链接。

richeditObject.setLink(href,charFormat2)

设置当前选区为超链接。。
参数 @href 指定超链接或文件路径。
参数 @charFormat2 可选指定包含 win.ui.ctrl.CHARFORMAT2 部分字段的表

默认会通过插入位置获取超链接,
如果超链接位置改变而获取失败,则通过 title 指定显示名称获取链接

richeditObject.setPadding(上,右,下,左)

设置文本边距
文本框必须在设计时指定为多行
在文本框改变大小后仍然可以保持此边距

richeditObject.setParent(控件对象)

改变父窗口

richeditObject.setPos(x坐标,y坐标,宽,高,插入位置,参数)

调整窗口位置或排序,所有参数可选
同时指定x,y坐标则移动位置
同时指定宽高则改变大小
指定插入位置(句柄或_HWND前缀常量)则调整Z序

richeditObject.setRect(rc)

设置控件区块位置(::RECT结构体)

richeditObject.setRect(rc,true)

设置控件屏幕区块位置(::RECT结构体)

richeditObject.setSelCharformat

设置选区样式。
用法细节请参考 richedit 库函数文档。
如果当前没有选区则修改插入点样式,新的样式仅在插入位置修改前有效。

可调用控件的 setFocus,setsel 函数修改选区或光标插入位置。

richeditObject.setSelCharformat(charformat2)

参数 @charformat2 使用 win.ui.ctrl.CHARFORMAT2 结构体设置文本样式,
传入仅指定部分字段的表将自动转换为 CHARFORMAT2 结构体。\例如修改字体颜色可传入 {textColor=0x00ff00}

richeditObject.setSelCharformat(null)

将选区或光标插入点样式设为默认样式。

richeditObject.setsel(当前位置)

无选区,
移动光标到指定位置的字符后面

richeditObject.setsel(起始位置,结束位置)

设置选区,以字符为单位
1为首字符,选区包含起始与结束位置
如果结束位置小于开始位置,自动交换参数位置,
注意richedit实际以\n换行,输入字符中的\r\n作为一个字符计数
可以用-1表示文本尾部

richeditObject.show(true)

显示控件

richeditObject.streamIn

读入 RTF 文档或普通文档

richeditObject.streamIn(RTF文本)

加载字符串参数 @1 指定的 RTF 格式文本

richeditObject.streamIn(格式,RTF文件路径)

读入 RTF 文档或普通文档,
格式参数默认为 _SF_RTF 用于读入 RTF 文档,
指定为 _SF_TEXT 则读入普通文本

richeditObject.streamIn(格式,输入函数)

richeditObject.streamIn(,function(format,buf,len){    
    return 0,file.readBuffer(buf,len);/*格式参数默认为 _SF_RTF,用于读入 RTF 文档,  
指定为 _SF_TEXT 则读入普通文本。  
成功读取文件回调函数应返回 0 与读取长度,  
否则请返回错误代码*/  
} )

richeditObject.streamOut

输出 RTF 文档或普通文档

richeditObject.streamOut(格式)

直接返回 RTF 格式或普通文本。
格式参数默认为 _SF_RTF 用于输出 RTF 文档,
指定为 _SF_TEXT 则输出普通文本

richeditObject.streamOut(格式,RTF文件路径)

输出 RTF 文档或普通文档,
格式参数默认为 _SF_RTF 用于输出 RTF 文档,
指定为 _SF_TEXT 则输出普通文本

richeditObject.streamOut(格式,输出函数)

richeditObject.streamOut(,function(format,buf,len){    
    var ok,bytes = file.writeBuffer(buf,len);/*保存RTF文档*/   
    return 0,bytes;  
} )

richeditObject.tabNext()

返回对象:staticObject

richeditObject.tabNext(移动焦点,是否反向)

获取下一个支持tab控制焦点的控件
参数@1为true会自动移动焦点到该控件
参数@2为true则获取上一个控件,否则获取下一个控件

richeditObject.text

获取或写入编辑控件文本属性。
可写入 UTF8 或 UTF16 字符串,写入 null 值转换为空字符串,
其他类型值用 tostring 转为字符串后写入。
注意 edit 控件使用'\r\
'表示换行,而 richedit 控件则使用'\
'表示换行,
用双引号或反引号包含字符串赋值时换行会自动将换行解析为'\
',
例如 winform.richedit.txt = "文本
第二行文本"

richeditObject.theme

外观主题,例如
winform.button.theme = "Explorer"
winform.button.theme = false

richeditObject.threadCallable()

开启此控件的跨线程调用功能

richeditObject.top

顶部坐标

richeditObject.translateAccelerator(msg)

richeditObject.translateAccelerator = function(msg){ 
    var vk = msg.wParam;
    if( (vk == 0x9/*_VK_TAB*/ ) || (vk = 0xD/*_VK_RETURN*/) ){
        if( msg.message == 0x100/*_WM_KEYDOWN*/) {
            owner.tabNext(true); 
            return true;/*在此事件中可拦截键盘消息并自定义快捷键  
tabNext函数切换到下一个支持tab控制键的控件  
如果这是一个快捷键返回true以取消该消息的默认行为*/
        }
    }   
}

richeditObject.translateCommand()

允许转发转发子窗口的命令(_WM_COMMAND)与通知(_WM_NOTIFY)消息,
避免子窗口 oncommand,onnotify 等回调失效。
同时会处理子窗口的 _WM_CTLCOLORSTATIC 等消息,
以避免部分外观属性失效

richeditObject.undo()

撤消

richeditObject.update()

重绘invalidate函数指定的区块

richeditObject.vScroll()

滚动到底部

richeditObject.vScroll(_SB)

滚动竖向滚动条

richeditObject.valid

窗口是否有效,
窗口未关闭返回 true ,
窗口已关闭或正在关闭返回 false

richeditObject.validateText

校验输入文本。
全部文本完全符合要求返回 true,否则返回 false。

可在 onChange 事件内调用此函数实时校验输入。

richeditObject.validateText(校验输入函数,是否设置光标)

调用参数 @1 指定的函数校验控件的文本属性,
该函数必须自参数中接收当前文本并返回合法文本或 null。
然后将文本设为符合合法的文本,如果校验函数返回 null 设为空字符串。

如果修改了文本且指定了参数 @2 为 true,\则将焦点切换到该控件,然后将输入光标设置到文本尾部。
注意仅 edit 控件可直接显示气泡提示,
richedit 无此功能可使用其他控件显示错误信息。

richeditObject.validateText(模式串,是否设置光标)

用字符串参数 @1 指定的模式串校验控件的文本属性。
将文本设为符合匹配的文本,如果找不到匹配文本设为空字符串。

如果修改了文本且指定了参数 @2 为 true,\则将焦点切换到该控件,然后将输入光标设置到文本尾部。
注意仅 edit 控件可直接显示气泡提示,
richedit 无此功能可使用其他控件显示错误信息。

richeditObject.validateText(限制金额示例,是否设置光标)

richeditObject.validateText("<\d+\.\d\d>|<\d+\.\d>|<\d+\.>|<\d+>",true)

richeditObject.width

宽度

richeditObject.wrap

是否启用自动换行,仅 richedit 支持

richeditObject.zoom

缩放比例,必须大于 1/32 并小于 32
Richedit 存在一个 BUG:如果不是左对齐,只要设置缩放 —— 包含中文就会偏移错乱,
所以右对齐或居中对齐后,自动 DPI 缩放将会更改为设置文本框默认字体,
这会导致局部字体样式被重置为默认字体

TextDocumentObject 成员列表

TextDocumentObject.BeginEditCollection()

开始编辑

TextDocumentObject.DefaultTabStop

制表符宽度

TextDocumentObject.EndEditCollection()

结束编辑

TextDocumentObject.Name

文件名

TextDocumentObject.New()

新建文件

TextDocumentObject.Open(filename,flags,codepage)

打开文档

TextDocumentObject.Range(first,lim)

返回选区

TextDocumentObject.RangeFromPoint(x,y)

指定坐标返回选区

TextDocumentObject.Redo(number)

重做

TextDocumentObject.Save(filename,flags,codepage)

保存文档

TextDocumentObject.Saved

是否保存

TextDocumentObject.Selection

选区对象

TextDocumentObject.Selection.Font

字体

返回对象:TomTextFontObject

TextDocumentObject.Undo(number)

撤消

TextDocumentObject.tomFalse

假值

TextDocumentObject.tomToggle

切换原来的值

TextDocumentObject.tomTrue

真值

TextDocumentObject.tomUndefined

未定义值

TomTextFontObject 成员列表

TomTextFontObject.Bold

是否粗体,
可使用tomTrue,tomFalse等值

TomTextFontObject.ForeColor

字体颜色

TomTextFontObject.Name

字体名

TomTextFontObject.Size

字体大小

charformat2Object 成员列表

charformat2Object.backColor

背景颜色,GDI 颜色格式( 0xBBGGRR )。

charformat2Object.bold

是否粗体,仅用于写入样式。
设置了这个值会在应用样式前自动修改 weight 属性。

charformat2Object.charSet

字符集

charformat2Object.disabled

偏移一个像素,仅用于写入样式。

charformat2Object.effects

效果

charformat2Object.faceName

字体名

charformat2Object.getFont()

返回LOGFONT对象

返回 LOGFONT 对象

返回对象:logfontObject

charformat2Object.italic

是否斜体,仅用于写入样式。

charformat2Object.lcid

区域ID

charformat2Object.mask

掩码,这个一般不用管

charformat2Object.pitchAndFamily

字体族

charformat2Object.point

字体大小,以 pt 为单位。仅用于写入样式。
在设置样式时指定 point 会在应用样式前自动修改 yHeight 的值。
修改字体大小请在窗体显示并且 DPI 初始化缩放完成以后再设置,不然会被重复放大。

charformat2Object.protected

保护文本,修改时触发 onProtected 事件。
仅用于整个控件,不适用于部分选区。
此属性仅用于写入样式。

charformat2Object.spacing

字体间距

charformat2Object.strikeout

是否显示删除线,仅用于写入样式。

charformat2Object.textColor

字体颜色,GDI 颜色格式( 0xBBGGRR )。

charformat2Object.underline

是否粗体,仅用于写入样式。

charformat2Object.underlineType

下划线类型

charformat2Object.weight

字体重量

charformat2Object.yHeight

字体大小,以 twips 为单位。
修改字体大小请在窗体显示并且 DPI 初始化缩放完成以后再设置,不然会被重复放大。

charformat2Object.yOffset

偏移

自动完成常量

_CFE_ALLCAPS=0x80
_CFE_AUTOBACKCOLOR=0x4000000
_CFE_AUTOCOLOR=0x40000000
_CFE_BOLD=1
_CFE_DISABLED=0x2000
_CFE_EMBOSS=0x800
_CFE_HIDDEN=0x100
_CFE_IMPRINT=0x1000
_CFE_ITALIC=2
_CFE_LINK=0x20
_CFE_OUTLINE=0x200
_CFE_PROTECTED=0x10
_CFE_REVISED=0x4000
_CFE_SHADOW=0x400
_CFE_SMALLCAPS=0x40
_CFE_STRIKEOUT=8
_CFE_SUBSCRIPT=0x10000
_CFE_SUPERSCRIPT=0x20000
_CFE_UNDERLINE=4
_CFM_ALL=-134217665
_CFM_ALL2=-16777217
_CFM_ALLCAPS=0x80
_CFM_ANIMATION=0x40000
_CFM_BACKCOLOR=0x4000000
_CFM_BOLD=1
_CFM_CHARSET=0x8000000
_CFM_COLOR=0x40000000
_CFM_DISABLED=0x2000
_CFM_EFFECTS=0x4000003F
_CFM_EFFECTS2=0x44037FFF
_CFM_EMBOSS=0x800
_CFM_FACE=0x20000000
_CFM_HIDDEN=0x100
_CFM_IMPRINT=0x1000
_CFM_ITALIC=2
_CFM_KERNING=0x100000
_CFM_LCID=0x2000000
_CFM_LINK=0x20
_CFM_OFFSET=0x10000000
_CFM_OUTLINE=0x200
_CFM_PROTECTED=0x10
_CFM_REVAUTHOR=0x8000
_CFM_REVISED=0x4000
_CFM_SHADOW=0x400
_CFM_SIZE=0x80000000
_CFM_SMALLCAPS=0x40
_CFM_SPACING=0x200000
_CFM_STRIKEOUT=8
_CFM_STYLE=0x80000
_CFM_SUBSCRIPT=0x30000
_CFM_SUPERSCRIPT=0x30000
_CFM_UNDERLINE=4
_CFM_UNDERLINETYPE=0x800000
_CFM_WEIGHT=0x400000
_CFU_CF1UNDERLINE=0xFF
_CFU_INVERT=0xFE
_CFU_UNDERLINE=1
_CFU_UNDERLINEDASH=5
_CFU_UNDERLINEDASHDOT=6
_CFU_UNDERLINEDASHDOTDOT=7
_CFU_UNDERLINEDOTTED=4
_CFU_UNDERLINEDOUBLE=3
_CFU_UNDERLINEDOUBLEWAVE=0xB
_CFU_UNDERLINEHAIRLINE=0xA
_CFU_UNDERLINEHEAVYWAVE=0xC
_CFU_UNDERLINELONGDASH=0xD
_CFU_UNDERLINENONE=0
_CFU_UNDERLINETHICK=9
_CFU_UNDERLINETHICKDASH=0xE
_CFU_UNDERLINETHICKDASHDOT=0xF
_CFU_UNDERLINETHICKDASHDOTDOT=0x10
_CFU_UNDERLINETHICKDOTTED=0x11
_CFU_UNDERLINETHICKLONGDASH=0x12
_CFU_UNDERLINEWAVE=8
_CFU_UNDERLINEWORD=2
_ENM_CHANGE=0x1
_ENM_CORRECTTEXT=0x400000
_ENM_DRAGDROPDONE=0x10
_ENM_DROPFILES=0x100000
_ENM_IMECHANGE=0x800000
_ENM_KEYEVENTS=0x10000
_ENM_LANGCHANGE=0x1000000
_ENM_LINK=0x4000000
_ENM_LOWFIRTF=0x8000000
_ENM_MOUSEEVENTS=0x20000
_ENM_NONE=0x0
_ENM_OBJECTPOSITIONS=0x2000000
_ENM_PAGECHANGE=0x40
_ENM_PARAGRAPHEXPANDED=0x20
_ENM_PROTECTED=0x200000
_ENM_REQUESTRESIZE=0x40000
_ENM_SCROLL=0x4
_ENM_SCROLLEVENTS=0x8
_ENM_SELCHANGE=0x80000
_ENM_UPDATE=0x2
_IMF_AUTOFONT=2
_IMF_AUTOFONTSIZEADJUST=0x10
_IMF_AUTOKEYBOARD=1
_IMF_CLOSESTATUSWINDOW=8
_IMF_DUALFONT=0x80
_IMF_FORCEACTIVE=0x40
_IMF_FORCEDISABLE=4
_IMF_FORCEENABLE=2
_IMF_FORCEINACTIVE=0x80
_IMF_FORCENONE=1
_IMF_FORCEREMEMBER=0x100
_IMF_IMEALWAYSSENDNOTIFY=8
_IMF_IMECANCELCOMPLETE=4
_IMF_MULTIPLEEDIT=0x400
_IMF_SMODE_NONE=2
_IMF_SMODE_PLAURALCLAUSE=1
_IMF_UIFONTS=0x20
_IMF_VERTICAL=0x20
_SCF_ALL=4
_SCF_ASSOCIATEFONT=0x10
_SCF_ASSOCIATEFONT2=0x40
_SCF_DEFAULT=0
_SCF_NOKBUPDATE=0x20
_SCF_SELECTION=1
_SCF_USEUIRULES=8
_SCF_WORD=2
_SFF_PWI=0x800
_SF_PWI=0x10802
_SF_RTF=2
_SF_TEXT=1
_SF_UNICODE=0x10
_SF_UTEXT=0x11

Markdown 格式