//修改颜色样式 import win.ui; import win.ui.ctrl.pick; /*DSG{{*/ var winform = win.form(text="在富文本框输入带颜色字体";right=840;bottom=514) winform.add( btnCopyRtf={cls="button";text="复制 RTF 代码";left=43;top=478;right=170;bottom=508;db=1;dl=1;z=5}; btnDemo={cls="button";text="输入示例颜色字体";left=181;top=478;right=346;bottom=508;db=1;dl=1;z=2}; colorPicker={cls="pick";text="自定义控件";left=382;top=19;right=824;bottom=473;db=1;dl=1;dr=1;dt=1;z=3}; richedit={cls="richedit";left=22;top=19;right=371;bottom=473;db=1;dl=1;dr=1;dt=1;edge=1;hidesel=false;multiline=1;z=1}; splitter={cls="splitter";left=373;top=19;right=378;bottom=473;db=1;dl=1;dt=1;frame=1;z=4} ) /*}}*/ //响应按钮事件 winform.btnDemo.oncommand = function(id,event){ /* 追加文本,支持任意个文本参数或样式表参数。 每个样式都会修改后面文本的样式,如果指定了样式表,函数返回前会恢复默认样式。 样式表可指定 CHARFORMAT2 结构体或者部分需要修改的字段即可。 请参考文档: doc://library-guide/std/win/ui/ctrl/charformat2.html */ winform.richedit.appendText( { textColor = 0xFF0000 }, " ","蓝色文本", { protected = true, point = 16 }, " ","绿色文本", { textColor = 0x0000FF,point = 8 }, " ","红色文本1", " ","红色文本2", " ","红色文本3", ); winform.richedit.appendText("默认样式"); /* 下面这样写也可以,等于传了一个表参数并省略了外层大括号{}。 函数会自动展开参数表的数组成员作为其他调用参数,可指定多个文本参数。 */ winform.richedit.appendText( textColor = 0xFF0000, "蓝色文本" ) } winform.splitter.split(winform.richedit,winform.colorPicker); winform.colorPicker.onColorChange = function(argb){ winform.richedit.setSelCharformat( textColor = gdi.rgbReverse(argb) ) } winform.richedit.onSelChange = function(min,max,typ){ var f = winform.richedit.getSelCharformat() winform.colorPicker.setColor( f.textColor,true ); } winform.btnCopyRtf.oncommand = function(id,event){ winform.btnCopyRtf.disabledText = ["✶","✸","✹","✺","✹","✷"]; win.clip.write( winform.richedit.rtf ); thread.delay(500); winform.btnCopyRtf.disabledText = null; } winform.show(); win.loopMessage();