控件的垂直居中与自动换行两个属性为什么不能彼此兼顾?
aardio吧
全部回复
仅看楼主
level 8
xqsun835 楼主
//static和plus内的文字需要动态选择垂直居中或自动换行
import win.ui;
var text_a="测试字符串字符串超过一行,需要自动换行,取消垂直居中"
/*DSG{{*/
var winform = win.form(text="点击static选择垂直居中或自动换行";right=502;bottom=294)
winform.add(
plus={cls="plus";text=text_a;left=30;top=133;right=283;bottom=178;align="left";autohscroll=false;edge=1;link=1;multiline=1;wrap=1;z=2};
static={cls="static";text=text_a;left=27;top=75;right=284;bottom=112;bgcolor=65280;frame=1;notify=1;z=1}
)
/*}}*/
winform.static.oncommand = function(id,event){
if( winform.static.text==text_a){
winform.static.center=false //没有垂直居中,原因不清楚
winform.static.nWrap=false;
winform.static.text= string.slice(text_a,23,,true)
winform.text='垂直居中'
winform.plus.text=string.slice(text_a,23,,true)
}else {
winform.static.center=true
winform.text='自动换行'
winform.static.nWrap=true;
winform.static.text=text_a
winform.plus.text=text_a
}
}
winform.show();
win.loopMessage();
2021年11月04日 06点11分 1
level 8
xqsun835 楼主
单行要求下面的效果,多行要求上面的效果.为什么只能在初始设置里面固定一种效果,程序运行修改为另一种无效
2021年11月04日 06点11分 2
level 9
控件的很多属性并不常用或者根本用不上,
如果我们都去加上,那就就会增加不必要的复杂度,例如垂直居中一般只会在设计时修改,而不会在运行时修改。
但是你仍然可以 modifyStyle 函数可以动态修改控件的所有样式。
垂直居中
winform.static.modifyStyle(,0x200/*_SS_CENTERIMAGE*/)
取消垂直居中
winform.static.modifyStyle(0x200/*_SS_CENTERIMAGE*/)
但是我试了一下你的代码,这样一会垂直居中,一会又取消垂直居中直的很奇怪,你要考虑一下你是否真的有必要这么做。
2021年11月09日 07点11分 4
谢谢老师答疑解惑!这个控件我用在打印表格内收付款对方开户银行名称,为了美观,垂直居中加左对齐,短的名称在一行显示,长的名称需要自动换行。我举例用了两个static控件引起误会,实际应是两条银行信息内容分别进同一位置控件展示。
2021年11月10日 23点11分
level 8
xqsun835 楼主
//static内的文字是否改变垂直居中属性,需要加字符串长度等判断语句.能否控件初始化时兼顾自动换行与垂直居中.
import win.ui;
var text_a={"测试字符串未超过一行","测试字符串字符串超过一行,需要自动换行,取消垂直居中"}
var t=string.len(text_a[1])
/*DSG{{*/
var winform = win.form(text="static垂直居中且自动换行";right=502;bottom=294)
winform.add(
button={cls="button";text="下一条";left=309;top=77;right=430;bottom=110;z=2};
static={cls="static";text=tostring(text_a[1]);left=27;top=75;right=284;bottom=112;bgcolor=65280;center=1;frame=1;notify=1;z=1}
)
/*}}*/
winform.button.oncommand = function(id,event){
if( t%2=1){
winform.static.modifyStyle(,0x200/*_SS_CENTERIMAGE*/)
winform.static.text=tostring(text_a[1])
}else {
winform.static.modifyStyle(0x200/*_SS_CENTERIMAGE*/)
winform.static.text= tostring(text_a[2])
}
t++
}
winform.show();
win.loopMessage();
为什么回复的内容被吞了,重发
2021年11月11日 00点11分 7
level 8
xqsun835 楼主
plus控件也是不能自动换行,在使用时还是增加了困难.不过有挑战才有乐趣嘛.在编程中变通思维很重要.
2022年11月09日 14点11分 8
1