2011-10-17 67 views
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 

我已验证记录集包含一些数据,循环正常工作,但没有显示标签,也无法理解为什么。

感谢您的任何帮助

回答

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

+0

可以在运行时使用的Control.Close方法,该方法是用于创建动态布局有用也除去索引控件。 – Beejor