aardio吧 关注:629贴子:758
  • 6回复贴,共1

控件的垂直居中与自动换行两个属性为什么不能彼此兼顾?

只看楼主收藏回复

//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();


IP属地:湖北1楼2021-11-04 14:34回复

    单行要求下面的效果,多行要求上面的效果.为什么只能在初始设置里面固定一种效果,程序运行修改为另一种无效


    IP属地:湖北2楼2021-11-04 14:38
    回复
      控件的很多属性并不常用或者根本用不上,
      如果我们都去加上,那就就会增加不必要的复杂度,例如垂直居中一般只会在设计时修改,而不会在运行时修改。
      但是你仍然可以 modifyStyle 函数可以动态修改控件的所有样式。
      垂直居中
      winform.static.modifyStyle(,0x200/*_SS_CENTERIMAGE*/)
      取消垂直居中
      winform.static.modifyStyle(0x200/*_SS_CENTERIMAGE*/)
      但是我试了一下你的代码,这样一会垂直居中,一会又取消垂直居中直的很奇怪,你要考虑一下你是否真的有必要这么做。


      IP属地:浙江4楼2021-11-09 15:01
      收起回复
        //static内的文字根据是否需要换行选择垂直居中或自动换行
        import win.ui;
        var text_a="测试字符串字符串超过一行,需要自动换行,取消垂直居中"
        /*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=text_a;left=27;top=75;right=284;bottom=112;bgcolor=65280;frame=1;notify=1;z=1}
        )
        /*}}*/
        winform.button.oncommand = function(id,event){
        if( winform.static.text==text_a){
        winform.static.modifyStyle(,0x200/*_SS_CENTERIMAGE*/)
        winform.static.text= string.slice(text_a,23,,true)
        }else {
        winform.static.modifyStyle(0x200/*_SS_CENTERIMAGE*/)
        winform.static.text=text_a
        }
        }
        winform.show();
        win.loopMessage();


        IP属地:湖北5楼2021-11-11 07:45
        回复
          //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();
          为什么回复的内容被吞了,重发


          IP属地:湖北7楼2021-11-11 08:28
          回复
            plus控件也是不能自动换行,在使用时还是增加了困难.不过有挑战才有乐趣嘛.在编程中变通思维很重要.


            IP属地:湖北8楼2022-11-09 22:34
            回复