用plus实现文本编辑的时候改变编辑框的外观

By admin at 2019-08-05 • 0人收藏 • 319人看过

2019-08-06更新:

一鹤校长升级了plus的边框功能, 现在已经可以很简便的实现 , 输入焦点动态边框效果了

GIF.gif

import win.ui;
/*DSG{{*/
var winform = win.form(text="plus编辑框动态效果测试";right=328;bottom=217;bgcolor=16777215)
winform.add(
plus={cls="plus";left=63;top=115;right=274;bottom=153;align="left";border={color=-2302756;radius=4;width=1};editable=1;font=LOGFONT(h=-14;name='微软雅黑');notify=1;textPadding={left=6;top=10};z=1};
plus2={cls="plus";left=60;top=58;right=271;bottom=96;align="left";border={color=-2302756;radius=20;width=1};editable=1;font=LOGFONT(h=-14;name='微软雅黑');notify=1;textPadding={left=10;top=10;right=10};z=2}
)
/*}}*/

winform.plus2.skin(
	border = {
		focus = {width=3;color=0xff000000;radius=15};
	}

)
winform.plus.skin(
	border = {
		focus = {left=3;bottom=3;top=3;right=3;color=0xff000000;/*radius=4*/};
	}
)

winform.show() 
win.loopMessage();





下面是旧版本之前实现同样的效果需要写的代码:

看看就好, 学习实现的思路,哈


试了拦截消息, 试了直接改skin , 下面这种方式最简单,哈

曲线救国, 实现就好

GIF.gif

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469;bgcolor=16777215)
winform.add(
edit={cls="edit";text="Edit";left=111;top=362;right=239;bottom=408;edge=1;multiline=1;z=3};
edit2={cls="edit";text="Edit";left=328;top=359;right=427;bottom=398;edge=1;z=4};
plus={cls="plus";left=271;top=164;right=482;bottom=202;align="left";border={color=-2302756;radius=4;width=1};editable=1;font=LOGFONT(h=-14;name='微软雅黑');notify=1;textPadding={left=6;top=12};z=1}
)
/*}}*/

//主要是针对check的状态来改变外观
winform.plus.skin(
	border = {
		default={left=1;bottom=1;top=1;right=1;color=0xff000000};
	}
	checked = {
		border = {
			default={left=3;bottom=3;top=3;right=3;color=0xff000000};
		};
	};	
)
//下面为了偷懒,使用了事件接收器
import win.ui.tracker;
var editb = win.ui.tracker(winform.plus.editBox);
//获取焦点
editb.onFocusGot = function(wParam,lParam){
	winform.plus.checked = true;
}
//失去焦点
editb.onFocusLost = function(wParam,lParam){
	winform.plus.checked = false;
}

winform.show() 
win.loopMessage();


1 个回复 | 最后更新于 2019-09-11
2019-09-18   #1

上次看到群里有人问:

怎么在改变边框颜色的同时改变字体的颜色?

测试了下, 用state状态判断就可以.

winform.plus2.onStateChange = function(state){
    //导出所有状态
    //console.dump(state);
    //判断当前状态
	if(state.focus == true){
		//改变字体颜色
		winform.plus2.editBox.color = 0x0055cc;
	}else {
		winform.plus2.editBox.color = 0x000000;
	}
	
}

GIF.gif

登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
Htmlayout皮肤Htmlayout皮肤引擎介绍
黑猫Aar教程网:简码编程
C大Aardio论坛:Aar爱好者论坛
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...