@ vuott:
Ti ringrazio per l'ampia codifica che mi hai suggerito come esempio, ma io non devo costruire una nuova linguetta, bensì aggiornare uno o più oggetti di una linguetta già esistente. In ogni caso, la prova che mi suggerisci
Label2[indSk].Text = "Prova"
è stata già fatta è alla sua esecuzione mi viene segnalato l'errore
Not an array
...scusami ma il codice che hai postato non potrebbe comportarsi diversamente, infatti tu referenzi Label2.Text e IdCassa.Foreground che altro non sono se non i nomi.proprietà di due oggetti presenti in una ed una sola delle TAB, in pratica qualunque sia la tab attiva tu stai impostando le proprietà di quei due oggetti specifici.
Forse io non ho capito come funziona una TabStrip, e se è così ogni chiarimento sarà più che gradito.
Secondo quanto capito dai documenti trovati e dal suo impiego pratico, mi pare che
TabStrip sia considerabile un array grafico. Per la generazione degli oggetti interni a ciascuna linguetta, sono costretto a richiamare una procedura che si occupa di creare dentro gli oggetti che, nel mio caso, sono sempre gli stessi, per cui l'oggetto Label2.Text non è definito una sola volta, bensì tutte le volte occorrenti, tante quante sono le linguette, via via generate:
Public Sub _new(vTbParIn As Variant[]) ' costruttore della Form07.class
---- bla ---- bla _--- bla ----
For i = 1 To vDatiTabStrip[0]
CarTabStripCorr(i)
Next
---- bla ---- bla _--- bla ----
End
Private Sub CarTabStripCorr(NumScheda As Integer)
---- bla ---- bla _--- bla ----
If NumScheda = 1 Then
ix = 0
Else
ix = (NumScheda - 1) * 17
Endif
If vDatiTabStrip[ix + 1] <> 999999999 Then
AggiungiScheda(NumScheda) 'inserisce la nuova linguetta
------------------------------------------------------------------------- Le prossime istruzioni sono uno stralcio del metodo impiegato per la valorizzazione di alcune delle proprietà degli oggetti --------------------------------------------------------------------------------- contenuti in una linguetta della Tabstrip
IdCassa.Text = vDatiTabStrip[ix + 1] ' IdMovvgg
iCoVoce = vDatiTabStrip[ix + 2]
EditNumCto = New EdtNumCto(iCoVoce)
CoVoceCassa.Text = EditNumCto.$NuVoCto
$DtCalend = Str(vDatiTabStrip[ix + 3])
DtCont.Text = Right($DtCalend, 2) & "." & Mid($DtCalend, 5, 2) & "." & Left($DtCalend, 4) ' DtCoMovg
ProMovim.Text = vDatiTabS
---- bla ---- bla _--- bla ----
End
Private Sub AggiungiScheda(inuProSk As Integer)
'-----------------------------------------------------------
With TabSchede
.Count = inuProSk + 1 'aggiungo una nuova scheda
.Index = .Count - 1 'predispongo l'azione sulla nuova scheda
.Text = "Sk n." & CStr(inuProSk)
End With
'-------------------------- disegno oggetti relativi al movimento di Cassa
With Label2 = New Label(TabSchede) As "Label2"
.X = 30
.Y = 8
.Width = 80
.Height = 24
.Alignment = 1 'Left
' .Alignment = 3 'Center
.Font.Name = "Sans Serif"
.Font.Size = 11
.Text = "Codice Id"
End With
With IdCassa = New TextLabel(TabSchede) As "IdCassa"
.X = 32
.Y = 29
.Width = 62
.Height = 24
.Background = iColorFondo
.Alignment = 3 'Center
.Border = 2 'Sunken
.Font.Name = "Sans Serif"
.Font.Size = 10
.Font.Bold = True
End With
---- bla ---- bla _--- bla ----
End
Quindi, per tornare alla tua riflessione, Tutte le linguette contengono una label chiamata
Label2 ed una TextLabel chiamata
IdCassa.
Considerando, perciò, che la TabStrip è un array grafico e considerando che tutti le linguette contengono una TextLabel.IdCassa, riportante sempre lo stesso ordine gerarchico, ho cercato di capire come individuare quella appartenente ad una delle linguette già disegnate e definite via codice. Mi è tornata in aiuto la documentazione interattiva di Gambas, relativa alla proprietà
Index dove si legge:
Property Index As Integer
Returns or sets the index of the current tab.
Ho perciò creduto di potere indirizzare sia in lettura che in scrittura/aggiornamento una linguetta impostando l valore della proprietà .Index su di essa.
Io credo benissimo di sbagliare qualcosa, ma non ho capito come e dove. Forse, ora che ho riportato un pò più di codice,. potrete illustrarmi più dettagliatamente la corretta soluzione.