用plus实现文本编辑的时候改变编辑框的外观
By
admin
at 2019-08-05 • 1人收藏 • 1476人看过
2019-08-06更新:
一鹤jacen升级了plus的边框功能, 现在已经可以很简便的实现 , 输入焦点动态边框效果了

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 , 下面这种方式最简单,哈
曲线救国, 实现就好

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
登录后方可回帖
上次看到群里有人问:
怎么在改变边框颜色的同时改变字体的颜色?
测试了下, 用state状态判断就可以.
winform.plus2.onStateChange = function(state){ //导出所有状态 //console.dump(state); //判断当前状态 if(state.focus == true){ //改变字体颜色 winform.plus2.editBox.color = 0x0055cc; }else { winform.plus2.editBox.color = 0x000000; } }