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 ответ

Решение

Существует два способа создания элементов управления во время выполнения в 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

Другие вопросы по тегам