Autore Topic: Aggiungere pagine ad un Tabstrip via codice  (Letto 9379 volte)

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: Aggiungere pagine ad un Tabstrip via codice
« Risposta #30 il: 08 Aprile 2008, 18:08:06 »
Ti avevo scritto, infatti, che la TabBox è un oggetto un pò particolare... e per un pò, era per non dire ostico e rompi... alquanto.

Intanto devi essere sicuro di puntare alla tab giusta, poi devi contare che, eliminando una delle tab in mezzo, le successive vengono scalate di conseguenza.

A mio avviso, sei di fronte a diversi problemi, dei quali alcuni sono causati dal tuo codice che punta in modo errato, gli altri sono per incomprensione del funzionamento dell'oggetto.

Ricorda che:
- con Index, punti alla tab;
- con Count, ritorna il numero di tab (visibili e non);
- con Count, puoi incrementare il numero di tab nell'oggetto;
- con Text, modifichi l'etichetta della tab, ma questa deve essere prima referenziata (es. con Index);
- con Count -1, non fai altro che eliminare l'ultima tab.

Quest'ultima clausola causa il problema che avevo descritto nei precedenti post, ovvero il fatto che decrementando i tab, sei costretto a spostare tutti gli oggetti nelle tab rimaste in modo scalare, ovvero da destra verso sinistra, riassegnando la parent a tutti in modo che corrispondano ad una tab visibile.
Diversamente da altri linguaggi, non è possibile eliminare puntualmente un determinata tab, perchè non viene considerata a livello utente come un singolo oggetto. In realtà invece questo E' un singolo oggetto, ma in gambas viene inteso in modo diverso; questo da una parte facilita il disegno di form statiche, dall'altra complica la vita in modalità dinamica (come vuoi fare tu).

Sono riuscito a spiegare il punto del dilemma ?

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Aggiungere pagine ad un Tabstrip via codice
« Risposta #31 il: 09 Aprile 2008, 17:39:20 »
Codice: [Seleziona]
TabStrip1.Text = "Linguetta"+cstr(tabstrip1.Count-1) '-- testo dell'ultima linguetta

Mi spieghereste questo codice che mi è stato dato precedentemente, principalmente il
Codice: [Seleziona]
cstr
...
sto tentando di capirci qualcosina e provare ad eliminare le tab come dico io, anche se in verità non ho ben capito come puntare una tab, ad esempio ho 3 tab chiamate luca, franceso, giovanni
ho selezionato giovanni e voglio selezionare francesco io scrivo cosi ma non mi va
"TabStrip1.Index = TextBox1.Text"

PS: Ho capito che sta TabStrip rompe molto.....ma io sono capa tosta!!!!!!!Help con un po' di codice please!!!!!
Grazie a tutti voi, non credevo di trovare un supporto cosi, mi sembra quasi di stare sul forum di ubuntu!!!!
Ciao.

g.paolo

  • Visitatore
Re: Aggiungere pagine ad un Tabstrip via codice
« Risposta #32 il: 09 Aprile 2008, 18:26:50 »
Per rispondere alla prima parte della tua domanda, il "cstr"  in questo caso trasforma il numero di riferimento della linguetta in un testo, così da poterlo concatenare con il testo posto innanzi "Linguetta".
Il risultato sarà una stringa del tipo "Linguetta03" ad esempio

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Aggiungere pagine ad un Tabstrip via codice
« Risposta #33 il: 09 Aprile 2008, 18:53:34 »
@ a lux

se ho capito bene tu vuoi selezionare una scheda in base al suo nome e questo via codice.


in tal caso un metodo può essere questo:

Codice: [Seleziona]
 PUBLIC SUB Button1_Click() 
 DIM i AS Integer
 DIM id AS Integer
   
         FOR i = 0 TO TabStrip1.Count - 1
             
                   TabStrip1.Index = i
             
                      IF TabStrip1.Text = TextBox1.Text
                        id = TabStrip1.Index
                      ENDIF
         NEXT

    TabStrip1.index = id  END

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Aggiungere pagine ad un Tabstrip via codice
« Risposta #34 il: 09 Aprile 2008, 18:56:40 »
se aggiungi

WAIT 0.1

DOPO

 TabStrip1.Index = i

ottieni un carino effetto scorrimento delle schede

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Aggiungere pagine ad un Tabstrip via codice
« Risposta #35 il: 10 Aprile 2008, 14:58:49 »
Ok, grazie il codice funziona, ora però vediamo se ho capito cosa hai scritto:
hai dichiarato 2 variabili ( i, id ) come intere
poi hai inserito un ciclo con for e next
dove gli hai detto che se i = 0 allora lui va sull'ultimo tab
altrimenti l'index del tabstrip è i.
Poi se il testo del tabstrip è uguale a quello del textbox allora il l'index deve essrere........

Domandina: ma la linguetta selezionata può essere mossa e portata in ultima posizione?

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Aggiungere pagine ad un Tabstrip via codice
« Risposta #36 il: 10 Aprile 2008, 19:46:40 »
Citazione
k, grazie il codice funziona, ora però vediamo se ho capito cosa hai scritto: hai dichiarato 2 variabili ( i, id ) come intere poi hai inserito un ciclo con for e next dove gli hai detto che se i = 0 allora lui va sull'ultimo tab altrimenti l'index del tabstrip è i. Poi se il testo del tabstrip è uguale a quello del textbox allora il l'index deve essrere........


nonè proprio così:

il ciclo for funziona cosi:


for i=0 to tabstrip1.count-1

....
...
...

next

pradicamente dice che partendo da i=0
 seleziona la linguetta in base all' indice che poi è I ( ti ricordo che l' idice della prima linguetta è 0 per questo for i=0)
l' espressione
   IF TabStrip1.Text = TextBox1.Text
             id = TabStrip1.Index
   ENDIF
serve per controllare il desto della linguetta , se il testo è uguale a quello
scritto nel textbox l' indice della linghuetta viene salvato nella variabile id

a questo punto troviamo

NEXT

che in pratica fa tornare il il "compilatore" all' istruzione For incrementando automaticamente la variabile I di uno
e si ripetono tutte  le istruzioni  fino a quando I è uguale al numero di linguette -1  (-1 perche l' indice delle linguette inizia da 0 ovvero
se hai 5 linguette tabstrip.count sarà uguale a 5 ma l' indice dell' ultima linguetta sarà uguale a 4


tabstrip.count è nolto comodo in quanto può essere usato sia in lettura che in scrittura ovvero come lo abbiamo usato prima (in lettura) ci dice il numero di linguette , se lo usiamo in scrittura genererà automaticamente il numero di linguette,
ad esempio se indichiamo

tabstrip1.count=10

il nostro tabstrip  avrà 10 linguette

le linguette non le puoi spostare con un semplice comando , per farlo dovrai copiare il nome e il contenuto dellla linguetta da spostare in un nella nuova posizione

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Aggiungere pagine ad un Tabstrip via codice
« Risposta #37 il: 11 Aprile 2008, 08:50:35 »
mmm, dovrei prima qiondi creare una nuova linguetta, poi copiare il contenuto della linguetta che voglio spostare nella nuova..oppure ho capito male?
Chiedo perchè nelle proprietà del tabstrip c'è la possibilità di poter spostare le linguette....

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Aggiungere pagine ad un Tabstrip via codice
« Risposta #38 il: 11 Aprile 2008, 20:33:01 »
ti riferisci a tabstrip1.move ?

se si,sappi che questo metodo serve a spostare tutta la tabstrip non solo una linguetta. :-(

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Aggiungere pagine ad un Tabstrip via codice
« Risposta #39 il: 12 Aprile 2008, 10:59:58 »
mmmm, non ho capito, io nelle proprietà della tabstrip ho visto che potevo muovere le linguette, non tutta la tabstrip...
Confuso....

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Aggiungere pagine ad un Tabstrip via codice
« Risposta #40 il: 12 Aprile 2008, 11:16:25 »
Citazione
mmmm, non ho capito, io nelle proprietà della tabstrip ho visto che potevo muovere le linguette


ma che metodo o proprietà era?

Offline Lux

  • Maestro Gambero
  • ****
  • Post: 417
    • Mostra profilo
Re: Aggiungere pagine ad un Tabstrip via codice
« Risposta #41 il: 12 Aprile 2008, 15:27:02 »
Sul TabStrip, tasto destro del mouse e vai su sposta tab....
In questo modo sposti le linguette...

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.277
  • Ne mors quidem nos iunget
    • Mostra profilo
« Ultima modifica: 28 Ottobre 2022, 15:10:11 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »