通过代码方式使用组件

在某些场景下,相对于直接在窗口中可视化添加组件,动态创建组件会更灵活,尤其是针对部分不可视组件的使用时。

动态创建组件

轻语言视窗中的所有组件都可以在代码中创建使用。

示例:

' 动态创建可视组件按钮、标签
变量 局_按钮1 = 创建 按钮()
变量 局_标签 = 创建 标签()
' 动态创建不可视组件
变量 局_时钟1 = 创建 时钟()
变量 局_音频播放器1 = 创建 音频播放器()

使用组件

通过代码创建好组件之后,可视组件需要将其添加到窗口中。

示例:

事件 窗口创建完毕()

    ' 动态创建可视组件按钮、标签
    变量 局_按钮1 = 创建 按钮()
    ' 设置按钮的标题及位置
    局_按钮1.标题 = "局_按钮1"
    局_按钮1.移动(10,10,100,30)
    ' 将按钮添加到窗口根布局中
    根布局.添加组件(局_按钮1)
    ' 创建标签并设置相关值
    变量 局_标签1 = 创建 标签()
    局_标签1.标题 = "局_标签1"
    局_标签1.背景颜色 = "#334455"
    局_标签1.移动(10,50,100,50)
    局_标签1.文本颜色 = "#ffffff"
    根布局.添加组件(局_标签1)

结束 事件

上方代码运行后,按钮与标签将分别添加到窗口左上角,运行效果如下图:

窗口坐标原点为窗口根布局左上角。

为组件添加事件

在轻语言中,为组件添加事件一共有三种方式:事件与回调 针对动态创建的组件,一般使用函数子程序地址或拉姆达表达式。

示例:

事件 窗口创建完毕()
    
    ' 动态创建可视组件按钮、标签
    变量 局_按钮1 = 创建 按钮()
    ' 设置按钮的标题及位置
    局_按钮1.标题 = "局_按钮1"
    局_按钮1.移动(10,10,100,30)
    ' 将按钮添加到窗口根布局中
    根布局.添加组件(局_按钮1)
    ' 创建标签并设置相关值
    变量 局_标签1 = 创建 标签()
    局_标签1.标题 = "局_标签1"
    局_标签1.背景颜色 = "#334455"
    局_标签1.移动(10,50,100,50)
    局_标签1.文本颜色 = "#ffffff"
    根布局.添加组件(局_标签1)
    ' 为 局_按钮1 注册被单击事件,当点击按钮时,改变 局_标签1 的文本内容
    局_按钮1.置被单击回调((来源对象,事件对象)->{
        局_标签1.标题 = "局_按钮1被单击"
    })
    
结束 事件

当点击按钮时、标签内容将会被改变,运行效果:

使用事件块语句

通过事件块监听事件,通常情况下只有在可视化设计时添加到窗口中的组件才能使用,但对于动态创建的组件,如果组件对象声明位置为窗口类成员变量时,也可以使用事件块监听组件事件,快捷添加事件方式:选中组件右键菜单项添加事件。

' 将 局_按钮1 声明为窗口成员组件,与事件、函数位于同一级别
' 鼠标选中变量名称,右键菜单添加事件块语句
变量 局_按钮1 为 按钮

事件 窗口创建完毕()
    ' 定义类成员后,记得仍需创建对象
    局_按钮1 = 创建 按钮()
    ' 设置按钮的标题及位置
    局_按钮1.标题 = "局_按钮1"
    局_按钮1.移动(10,10,100,30)
    ' 将按钮添加到窗口根布局中
    根布局.添加组件(局_按钮1)
结束 事件

' 当按钮声明为窗口类成员时,可以像可视化设计时添加的组件一样使用代码块语句
事件 局_按钮1.被单击(来源对象 为 对象,事件对象 为 鼠标事件)
    信息框("局_按钮1被单击")
结束 事件

不可视组件用法与上方可视组件用法基本相同,不同的地方在于:不可视组件无需将其添加到窗口根布局中。