Sid*_*Sid 1 powerbuilder dynamic
CBX代表复选框,我想使用for循环最小化代码,但不知道PB识别语句上的连接的语法
IF cbx_1.Checked = TRUE THEN
fw_generate(1, cbx_1.Text)
END IF
IF cbx_2.Checked = TRUE THEN
fw_generate(2, cbx_2.Text)
END IF
IF cbx_1.Checked = TRUE THEN
fw_generate(3, cbx_3.Text)
END IF
Run Code Online (Sandbox Code Playgroud)
您需要构建一个CheckBox对象数组,然后您可以遍历这些对象.例如,
在窗口上声明一个实例变量
CheckBox boxes[]
Run Code Online (Sandbox Code Playgroud)
在窗口打开事件中添加代码以收集要循环的对象:
integer i
for i = 1 to UpperBound(this.control)
if TypeOf(this.control[i]) = CheckBox! Then
boxes[UpperBound(boxes) + 1] = this.control[i]
end if
next
Run Code Online (Sandbox Code Playgroud)
注意,您可以使用列表中包含(或不包含)给定控件的任何逻辑.在这里我添加了每个复选框,如果你只想要一些复选框,你可能需要在IF条件下做更多的测试.
循环控制数组以执行您需要的任何操作.例如,在按钮单击事件中,以下将翻转已检查状态.
integer i
for i = 1 to UpperBound(boxes)
boxes[i].Checked = NOT boxes[i].Checked
next
Run Code Online (Sandbox Code Playgroud)
顺便说一句,IF cbx_1.Checked = TRUE THEN是多余的...... Checked属性是布尔值,所以IF cbx_1.Checked THEN就足够了.