REALBasic - 以编程方式创建控件

时间:2011-10-17 11:00:35

标签: realbasic

我想以编程方式创建一些标签,代码不会返回任何错误,但我在窗口中看不到任何标签。

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

我已经验证记录集包含一些数据,循环正常但没有显示标签,无法理解原因。

感谢您的帮助

1 个答案:

答案 0 :(得分:5)

在Real Studio中,有两种方法可以在运行时创建控件。第一个是创建一个控制数组。您可以将控件命名为MyLabel并为其指定零。然后你的代码将是:

test(i) = new MyLabel

第二种是使用ContainerControl。此容器将包含一个标签,因为您可以使用NEW命令并使用ContainerControl.EmbedWithin方法将它们添加到窗口(或其他容器)。

我通常更喜欢ContainerControl方法有很多原因,但主要是因为控制数组使逻辑变得更加复杂。容器的唯一缺点是它需要Real Studio Professional或Real Studio Enterprise。

http://docs.realsoftware.com/index.php/UsersGuide:Chapter_5:Creating_New_Instances_of_Controls_On_The_Fly

http://docs.realsoftware.com/index.php/ContainerControl