REALBasic - 以编程方式创建控件

Mar*_*ion 1 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
Run Code Online (Sandbox Code Playgroud)

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

谢谢你的帮助

小智 5

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

test(i) = new MyLabel
Run Code Online (Sandbox Code Playgroud)

第二种是使用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