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

Смежные вопросы