2011-10-17 63 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