Y++ 社区

Y++ 滚动区域组件实现长布局示例

教程 组件示例 浏览 24 管理员

IDE v4.1.0.2

Y++滚动区域组件YStudio

Y++ 滚动区域组件实现长布局示例

登录后收藏

约 2214 字 · 6 分钟阅读

Y++ 使用组件箱:滚动区域 组件进行长布局,代码:

整数 g_通过
整数 g_失败
整数 g_滚动事件次数
整数 g_最后滚动值
文本 g_log
逻辑 g_要自动退出

函数 记日志 (文本 s) {
    g_log = g_log + s + "\r\n"
    输出(s)
}

函数 断言 (逻辑 ok, 文本 名) {
    如果 (ok) {
        g_通过 = g_通过 + 1
        记日志("  OK    " + 名)
    } 否则 {
        g_失败 = g_失败 + 1
        记日志("  FAIL  " + 名)
    }
}

函数 收尾 () {
    记日志("")
    记日志("=== 总结 通过=" + 到文本(g_通过) + " 失败=" + 到文本(g_失败) + " ===")
    文本 done = 合并路径(取程序目录(), "_test_done.txt")
    如果 (g_失败 == 0) {
        标签状态.标题 = "通过 " + 到文本(g_通过) + "/0"
        输出("SCROLLAREA_LONG_OK")
        写文件(done, 到文本(g_通过) + "/0", #编码_UTF8, #写模式)
    } 否则 {
        标签状态.标题 = "失败 " + 到文本(g_通过) + "/" + 到文本(g_失败)
        输出("SCROLLAREA_LONG_FAIL")
        写文件(done, 到文本(g_通过) + "/" + 到文本(g_失败), #编码_UTF8, #写模式)
    }
    如果 (g_要自动退出) {
        如果 (g_失败 == 0) {
            结束程序(0)
        } 否则 {
            结束程序(1)
        }
    }
}

函数 跑合测 () {
    g_通过 = 0
    g_失败 = 0
    g_滚动事件次数 = 0
    g_最后滚动值 = -1
    g_log = ""
    标签状态.标题 = "运行中…"
    写文件(合并路径(取程序目录(), "_test_begin.txt"), "begin", #编码_UTF8, #写模式)
    记日志("=== 滚动区域长布局新能力冒烟 ===")

    滚动区域1.垂直滚动条 = 0
    滚动区域1.水平滚动条 = 0
    滚动区域1.平滑滚动 = 假
    // 先测默认留白(0),再改成1:固定1px,不应再多出大块空白

    滚动区域1.底部留白 = 0
    滚动区域1.刷新()
    滚动区域1.滚到(0, 0)
    整数 ch默认 = 滚动区域1.内容高度
    滚动区域1.底部留白 = 1
    滚动区域1.刷新()
    滚动区域1.滚到(0, 0)

    断言(滚动区域1.垂直滚动条 == 0, "垂直滚动条=0(自动)")
    断言(滚动区域1.水平滚动条 == 0, "水平滚动条=0(自动)")
    断言(滚动区域1.底部留白 == 1, "底部留白=1")
    断言(滚动区域1.平滑滚动 == 假, "平滑滚动=假")

    整数 cw = 滚动区域1.内容宽度
    整数 ch = 滚动区域1.内容高度
    整数 vw = 滚动区域1.可视宽度
    整数 vh = 滚动区域1.可视高度
    记日志("  内容=" + 到文本(cw) + "x" + 到文本(ch) + " 视口=" + 到文本(vw) + "x" + 到文本(vh) + " 默认高=" + 到文本(ch默认))
    断言(cw > 0, "内容宽度>0")
    断言(ch > vh, "内容高度>可视高度")
    断言(vw > 0, "可视宽度>0")
    断言(vh > 0, "可视高度>0")
    断言(滚动区域1.需要垂直滚动条 == 1, "自动策略需要竖条")
    断言(ch默认 > ch + 50, "默认留白明显大于固定1px")
    断言(ch默认 - ch < 280, "默认留白在合理上限内")

    整数 事件前 = g_滚动事件次数
    滚动区域1.置滚动位置(200)
    断言(滚动区域1.取滚动位置() == 200, "置滚动位置(200)")
    断言(滚动区域1.垂直滚动位置 == 200, "属性 垂直滚动位置=200")
    断言(g_滚动事件次数 > 事件前, "滚动事件已触发")
    断言(g_最后滚动值 == 200, "事件当前值=200")

    滚动区域1.滚过(0, 50)
    断言(滚动区域1.取滚动位置() == 250, "滚过(+50)")

    滚动区域1.滚到(0, 0)
    断言(滚动区域1.取滚动位置() == 0, "滚到(0,0)")
    断言(滚动区域1.水平滚动位置 == 0, "水平滚动位置=0")

    滚动区域1.垂直滚动条 = 1
    滚动区域1.滚到(0, 0)
    断言(滚动区域1.垂直滚动条 == 1, "垂直滚动条=1(始终)")
    断言(滚动区域1.需要垂直滚动条 == 1, "始终策略显示竖条")

    滚动区域1.垂直滚动条 = 2
    滚动区域1.滚到(0, 0)
    断言(滚动区域1.垂直滚动条 == 2, "垂直滚动条=2(隐藏)")
    断言(滚动区域1.需要垂直滚动条 == 0, "隐藏策略不显示竖条")
    滚动区域1.置滚动位置(160)
    断言(滚动区域1.取滚动位置() == 160, "隐藏策略仍可置滚动")

    滚动区域1.平滑滚动 = 真
    断言(滚动区域1.平滑滚动 == 真, "平滑滚动=真")
    滚动区域1.平滑滚动 = 假
    滚动区域1.垂直滚动条 = 0
    滚动区域1.滚到(0, 0)
    断言(滚动区域1.取滚动位置() == 0, "复位到顶")

    收尾()
}

函数 主窗口.创建完毕 () {
    g_要自动退出 = 假
    文本 自动退出标记 = 取环境变量("YSTUDIO_SMOKE_AUTOEXIT")
    如果 (自动退出标记 == "1") {
        g_要自动退出 = 真
    }
    写文件(合并路径(取程序目录(), "_test_create.txt"), "create autoexit=" + 自动退出标记, #编码_UTF8, #写模式)
    跑合测()
}

函数 滚动区域1.滚动 (整数 当前值) {
    g_滚动事件次数 = g_滚动事件次数 + 1
    g_最后滚动值 = 当前值
}

函数 按钮底部确认.单击 (整数 X, 整数 Y) {
    标签状态.标题 = "已点到底部确认"
    输出("底部确认被单击")
}

函数 按钮提示.单击 (整数 X, 整数 Y) {
    g_要自动退出 = 假
    跑合测()
}

 

设计时界面:

 

相关官方文档

回复 (1)

Y++版主
不错,教程非常详细