REALBasic - Programmatically create controls

3k views Asked by At

i'm tring to create some label programmatically, the code doesn't return any error but i cannot see any label in my window.

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

i've verified that the recordset contain some data, the loop work correctly but no label is shown and cannot understand why.

thanks for any help

1

There are 1 answers

1
BKeeney Software On BEST ANSWER

There are two ways to create controls at runtime in Real Studio. The first is to create a control array. You could name the control MyLabel and give it an index of zero. Then your code would be:

test(i) = new MyLabel

The second is to use a ContainerControl. This container would contain a label and because you can add them to your window (or other container) using the NEW command and using the ContainerControl.EmbedWithin method.

I generally prefer the ContainerControl approach for many reasons, but mostly because control arrays make the logic a big more convoluted. The only drawback with containers is that it requires Real Studio Professional or 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