我想以编程方式创建一些标签,代码不会返回任何错误,但我在窗口中看不到任何标签。
dim dr As DatabaseRecord
dim sql As String
sql = "SELECT * FROM pack WHERE applicabilita_modello LIKE '%" + versione + "%'"
dim rs As RecordSet = database.SQLSelect(sql)
dim i As Integer = 1
dim test(10) As Label
while not rs.EOF
test(i) = new Label
test(i).Text = rs.Field("descrizione").StringValue
test(i).Left = me.Left
test(i).Top = me.Top * i
test(i).Enabled = true
test(i).Visible = true
rs.MoveNext
i = i + 1
wend
rs.Close
我已经验证记录集包含一些数据,循环正常但没有显示标签,无法理解原因。
感谢您的帮助
答案 0 :(得分:5)
在Real Studio中,有两种方法可以在运行时创建控件。第一个是创建一个控制数组。您可以将控件命名为MyLabel并为其指定零。然后你的代码将是:
test(i) = new MyLabel
第二种是使用ContainerControl。此容器将包含一个标签,因为您可以使用NEW命令并使用ContainerControl.EmbedWithin方法将它们添加到窗口(或其他容器)。
我通常更喜欢ContainerControl方法有很多原因,但主要是因为控制数组使逻辑变得更加复杂。容器的唯一缺点是它需要Real Studio Professional或Real Studio Enterprise。