REALBasic - Программно создавать элементы управления - PullRequest
1 голос
/ 17 октября 2011

Я пытаюсь создать метку программно, код не возвращает ошибку, но я не вижу метки в моем окне.

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

5 голосов
/ 17 октября 2011

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

...