Aggiungere schede in una TabStrip successivamente alla sua creazione

Da Gambas-it.org - Wikipedia.

Poniamo il caso in cui, abbiamo una TabStrip con una sola scheda e vogliamo aggiungerne - in un momento successivo e a nostro piacimento - altre contenenti al loro interno anche uno o più Controlli.

Esempio n. 1

Nell'esempio che segue, le schede della TabStrip saranno aggiunte via codice cliccando su un tasto. Inoltre, ogni scheda così aggiunta conterrà un Button al suo interno:

Public Sub Form_Open()

' Intesta innanzitutto la "prima" scheda (dalla quale si comincerà per inserire successivamente le restanti nuove):
 TabStrip1.Text = "1"

End


Public Sub Button1_Click()

 Dim bt As Button

 With TabStrip1
' Aggiunge una scheda:
   .Count = TabStrip1.Count + 1
' Apre la scheda appena aggiunta...:
   .Index = .Count - 1
' ...e la intesta:
   .Text = CStr(.Count)
 End With

' Quindi pone il "Button" nella nuova scheda:
 With bt = New Button(TabStrip1) As "tasto"
   .X = 40
   .Y = 100
   .W = 100
   .H = 50
   .Text = "Tasto " & CStr(TabStrip1.Count)
 End With

End


Public Sub tasto_Click() ' Prova il funzionamento dei "Button" inseriti:

 Me.Title = "Premuto tasto n. " & Last.Text

End


Esempio n. 2

Pur essendo la gestione di dati rivolta alle più disparate situazioni e settori applicativi, un programma, singolarmente preso, affronta problematiche tematiche con casistiche ridondanti. Proprio allo scopo di fronteggiare rappresentazioni ripetitive di dati della stessa natura, si riportail codice necessario a generare nuove linguette (schede) di una “TabStrip”. Gli oggetti interni alla linguetta sono in parte organizzati in scala gerarchica, all'interno di contenitori grafici. Ciascuna riga contiene il commento esplicativo del codice che la precede.

Private Sub AggiungiScheda(iTotSk As Integer)
 Dim $ColorFondo As String = "&H00CFD6ED&"         ' Color uovo di pettirosso chiaro 
 Dim iColorFondo As Integer = Val($ColorFondo)
 Dim i as Integer
 Dim n as Integer
'----------------------------------------------------------- 
 n = iTotSk
 For i = 1 to n
   With TabSchede
     .Count = TabSchede.count + 1   ' aggiungo una nuova scheda 
     .Index = .Count - 1            ' predispongo l'azione sulla nuova scheda 
     .Text = "Sk n." & Cstr(TabSchede.Count )   ' scrivo il n° progressivo della linguetta corrente 
   End With

   With Label1 = New Label(TabSchede) As "Label1"   ' aggiungo la Label1 nella linguetta corrente 
     .X = 30
     .Y = 8
     .Width = 80
     .Height = 24
     .Alignment = Align.Left
     .Font.Name = "Sans Serif"
     .Font.Size = 11
     .Text = "Codice Id"
   End With
   With IdCassa = New TextLabel(TabSchede) As "CodId"    ' aggiungo la TextLabel.CodId nella linguetta corrente 
     .X = 32
     .Y = 29
     .Width = 62
     .Height = 24
     .Background = iColorFondo
     .Alignment = Align.Center
     .Border = Border.Sunken
     .Font.Name = "Sans Serif"
     .Font.Size = 10
     .Font.Bold = True
   End With
   With Panel1 = New Panel(TabSchede) As "Panel1"    ' aggiungo il Panel1 nella linguetta corrente 
     .Border = 1   'Plain
     .X = 304
     .Y = 31
     .Width = 400
     .Height = 80
   End With
   With Label4 = New Label(Panel1) As "Label4"   ' aggiungo la Label4, all'interno del Panel1 
     .X = 8
     .Y = 7
     .Width = 144
     .Height = 24
     .Alignment = Align.Left
     .Font.Name = "Sans Serif"
     .Font.Underline = True
     .Font.Size = 11
     .Text = "Conto         "
   End With
   With Panel2 = New Panel(Panel1) As "Panel2"    ' aggiungo il Panel2, all'interno del Panel1
     .Border = 1   'Plain
     .X = 104
     .Y = 4
     .Width = 292
     .Height = 72
     .Background = iColorFondo
   End With
   With Nome= New TextLabel(Panel2) As "Nome"    ' aggiungo la TextLabel.Nome, all'interno del Panel2
     .X = 1
     .Y = 1
     .Width = 290
     .Height = 32
     .Background = iColorFondo
     .Alignment = Align.Left
     .Font.Name = "Sans Serif"
     .Font.Size = 10
     .Font.Bold = True
   End With
   With Descriz = New TextArea(TabSchede) As "Descriz"   ' Aggiungo la TextArea.Descriz nella linguetta corrente
     .X = 304
     .Y = 158
     .Width = 400
     .Height = 72
     .Background = iColorFondo
     .Alignment = Align.Left
     .Border = Border.Sunken
     .ScrollBar = 2   ' Verticale
     .Wrap = True     ' permette la continuazione “a capo del testo eccedente la singola riga della TextArea
     .Font.Name = "Sans Serif"
     .Font.Size = 10
     .Font.Bold = True
     .Text = "12345678101234567820123345678301234567840123456785012345678601234567870123456788012345678901234567100"
   End With
 Next

End