win.ui.tabs 的 clear() 函数导致程序报错的解决办法

光庆 13天前 200

执行 win.ui.tabs 的 clear() 函数后,会导致程序报错。

因为这个函数,清除了tabs的第1个项目,从而导致 tabList[1].setTimeout() 函数中访问该项目时出错。

测试代码如下:

Code AardioLine:13复制
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
    • import win.ui;
    • /*DSG{{*/
    • var winform = win.form(text="aardio form";right=759;bottom=469)
    • winform.add({
    • plus={cls="plus";text="111111";left=224;top=184;right=360;bottom=248;forecolor=32768;z=1};
    • plus2={cls="plus";text="22222";left=368;top=184;right=504;bottom=248;forecolor=32768;z=2}
    • })
    • /*}}*/
    • winform.show();
    • import win.ui.tabs
    • var tabs = win.ui.tabs(winform.plus,winform.plus2);
    • tabs.clear();
    • win.loopMessage();


    修改方法:

    将 win.ui.tabs 库文件的如下代码:

    Code AardioLine:17复制
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
    • if(defaultStyle){
    • this.tabList[1].setTimeout(
    • function(){
    • if(!this.style){
    • var $fixDefaultStyle = {
    • color = this.tabList[1].argbColor; // 每次都访问 tabList[1] ,若清除此项目,便出错。
    • foreground = this.tabList[1].getForeground(); // 每次都访问 tabList[1] ,若清除此项目,便出错。
    • }
    • this.skin( ..table.clone(defaultStyle));
    • //避免将默认字体修改为白色,用户自定义样式又指定了白色背景且没有指定字体颜色
    • this.$fixDefaultStyle = $fixDefaultStyle;
    • }
    • },100
    • )
    • }

    改为:

    Code AardioLine:17复制
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
    • if(defaultStyle){
    • this.tabListargbColor = this.tabList[1].argbColor; // 预存此值,以便后用,与项目脱钩,无需每次都访问
    • this.tabListgetForeground = this.tabList[1].getForeground(); // 预存此值,以便后用,与项目脱钩,无需每次都访问
    • this.tabList[1].setTimeout(
    • function(){
    • if(!this.style){
    • var $fixDefaultStyle = {
    • color = this.tabListargbColor;
    • foreground = this.tabListgetForeground;
    • }
    • this.skin( ..table.clone(defaultStyle));
    • //避免将默认字体修改为白色,用户自定义样式又指定了白色背景且没有指定字体颜色
    • this.$fixDefaultStyle = $fixDefaultStyle;
    • }
    • },100
    • )
    • }



    最新回复 (1)
    • 近我者赤 13天前
      0 2

    返回