1

我正在尝试以编程方式创建一些标签,代码不会返回任何错误,但我在窗口中看不到任何标签。

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

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

谢谢你的帮助

4

1 回答 1

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

于 2011-10-17T13:48:13.607 回答