Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: Lux - 10 Febbraio 2008, 14:36:48

Titolo: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 10 Febbraio 2008, 14:36:48
Salve, ho un tabstrip, ora vorrei poter aggiungere una o più pagine(Tabs) al tabStrip via codice(cioè ogni qual volta io prema un tasto mi da la possibilità di inserire nuovi tab)
Ciao.
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: leo72 - 10 Febbraio 2008, 16:42:33
Poniamo il caso che tu abbia un pulsante. Premendolo aggiungi una tab con questo codice:

Codice: [Seleziona]

TabStrip1.Count = TabStrip1.Count + 1
TabStrip1.Index = TabStrip1.Count - 1 '-- indice all'ultimo tab
TabStrip1.Text = "Linguetta"+cstr(tabstrip1.Count-1) '-- testo dell'ultima linguetta
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 11 Febbraio 2008, 08:27:23
Grazie, ora vorrei capire un'altra cosa..se le "linguette" dovrei aggiungerle in un'altra Tabstrip sita in un'altra finestra, come dovrei fare?
Io ho una "FMain" un form principale quindi dal quale apro una finestra di dialogo con la quale dovrei far aggiungere una nuova pagina nel tabstrip del "FMain".
Io ho inserito questo codice ma non va...
ecco:
Codice: [Seleziona]
FMain.TabStrip1.Count = TabStrip1.Count + 1
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: leo72 - 11 Febbraio 2008, 09:05:28
O usi una variabile globale (via più semplice) oppure il form in cui compare il tabstrip da "comandare" puoi provare a crearlo via codice, e qui la cosa diventa lunga e tediosa.
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 11 Febbraio 2008, 09:32:12
Potresti farmi un'esempio...Sto imparando solo ora quindi molte cose non le capisco ancora, sono un "gamberetto" nel vero senso della parola :-)
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: leo72 - 11 Febbraio 2008, 10:50:45
Ma il form in cui è contenuto il TabStrip, è visibile mentre dall'altro viene modificato il numero di linguette oppure lo visualizzi in un secondo tempo?
Se è visibile, allora potresti usare una variabile globale, penso. In Gambas, però, non esiste il concetto di "variabile globale" quale quella a cui siamo abituati con VB. Devi creare un modulo (una classe statica) e poi dichiarere dentro ad esso una variabile con PUBLIC Nome_Variabile AS Tipo.
Poi la chiami da dove vuoi semplicemente usando la forma NomeModulo.Nome_Variabile.

Fatto questo potresti memorizzare dal primo form i tab e poi dal secondo modificare il tabstrip con il valore della variabile su impostata.
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 11 Febbraio 2008, 17:04:04
Mi dispiace non ho capito bene cosa intendi, esiste un manuale dove poter studiare?
Comunque io ho un form principale nel quale vi è un TabStrip al quale voglio aumentare o diminuire il numeo delle pagine, su questo Form ho anche un tasto, il quale, una volta cliccato apre una nuova Form, (ho in queso modo due form visibili, quest'ultima posta al di sopra della principale, tipo una finestra di dialogo, in questa finestra di dialogo posso scegliere quante pagine inserire, il loro nome oppure se eliminare una pagina....
Forse è troppo complicato dato le mie basse conoscenze però questa cosa in Visual basic la facevo molto facilmente...uffa!
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: leo72 - 11 Febbraio 2008, 18:52:40
Beh, intanto c'è la documentazione online che, per quanto riguarda i widget quali form, tabstrip ecc., è ben fornita.
Quindi, premi F1 e poi naviga nel menu laterale sinistro in gb.qt e poi clicca sulle voci interessate.

Poi, per quanto riguarda il tuo problema, devi proprio modificare le linguette da un altro form?
Potresti provare a creare la TabStrip a livello di codice, a renderne il tipo PUBLIC ed a provare a modificare dall'altro form il numero delle linguette del primo form (non so se funziona, l'ho "sparato" così su 2 piedi).
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 11 Febbraio 2008, 19:55:24
Veramente per la mia applicazione la finestra di dialogo è fondamentale dato che dovrebbe darmi la possibilità di inserire oltre a nuove pagine anche TextBox, pulsanti, disegni come linee o cerchi, grafici e altre cose.
Non credevo che con Gambas la cosa potesse essere così complessa!
Anche disegnare linee o grafici a torta è un'operazione complessa?
Altrimenti mi vedo costretto a passare col Visual basic express 2005, col quale riuscivo a fare tutte queste cose anche con le modeste conoscenze che ho.
Ma se volessi creare un menù(tipo quello che si ha quando si clicca col tasto destro del mouse) come dovrei fare?
PS:Leggo la documentazione come mi hai consigliato, poi faccio sapere.
Ciao e grazie mille per l'aiuto che mi stai dando.
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: milio - 11 Febbraio 2008, 21:49:45
Ciao a tutti.
Io l'ho risolta così:
Crea sul Mform dove si trova la TabStrip una PUBLIC SUB AggiornaStrip() dove al suo interno gli metti il codice per aggiungere una nuova tab.
Nell'altra form crea un tasto il cui codice richiama Mform.AggiornaStrip(). A me ha funzionato. Ciao
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 12 Febbraio 2008, 08:37:41
Mi spiegheresti come fare il codice per richiamare la sub aggiorna strip()"che io intendo come macro" giusto? Tipo quelle che si fanno con excel per intenderci?
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: md9327 - 12 Febbraio 2008, 13:20:14
Per interagire con due finestre diverse, hai molte alternative, dipende da come è strutturato il processo main->finestre:
- utilizzare una classe statica che tiene in memoria traccia delle cose che vuoi tracciare (in questo caso il numero di tabs);
- passare alla form principale il riferimento dell'altra, in modo che la seconda possa giocarci sopra;
- definire il processo main (quello che apre le finestre) come gestore principale degli eventi delle finestre figlie.

Perdona se non ti scrivo codice, ma da dove sono ora non ho la possibilità...

Bye
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: milio - 12 Febbraio 2008, 15:14:37
Nel form dove si trova la tua TabStrip vai a creare una PUBLIC SUB che ti aggiunga una tabella

PUBLIC SUB AggiungiTab()
   
  TabStrip1.Count = TabStrip1.Count + 1

END


Nel form che gestisce l'aggiunta di tabelle tramite un pulsante, metti questo codice all'interno dell'evento Click che richiamerà la sub pubblica del form (in questo esempio si chiama FormTabStrip) dove si trova la TaStrip

PUBLIC SUB TuoButton_Click()

  FormTabStrip.AggiungiTab()

END

ciau.
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 13 Febbraio 2008, 11:02:43
Grazie, però non riesco a farlo funzionare..colpa mia.. allora cerco d'essere più preciso in modo da aiutarti nell'aiutarmi:oops:
io ho un FMain (un form principale) nel quale vi è un tabstrip1, ora come codice per aggiungere altri tab ho scritto:
Codice: [Seleziona]
PUBLIC SUB InsertTab()
  TabStrip1.Count = Tabstrip1.Count + 1
END

ora nel bottone del form che uso come finestra di dialogo ho provato a scrivere questo codice:
Codice: [Seleziona]
PUBLIC SUB Button1_Click()
'Collegamento alla Macro insertTab del Form main
 FormTabStrip.InsertTab()
END

Ma avviamente l'errore è li da qualche parte....:cry:
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: giulio - 13 Febbraio 2008, 11:23:53
Citazione

Lux ha scritto:
Grazie, però non riesco a farlo funzionare..colpa mia.. allora cerco d'essere più preciso in modo da aiutarti nell'aiutarmi:oops:
io ho un FMain (un form principale) nel quale vi è un tabstrip1, ora come codice per aggiungere altri tab ho scritto:
Codice: [Seleziona]
PUBLIC SUB InsertTab()
  TabStrip1.Count = Tabstrip1.Count + 1
END

ora nel bottone del form che uso come finestra di dialogo ho provato a scrivere questo codice:
Codice: [Seleziona]
PUBLIC SUB Button1_Click()
'Collegamento alla Macro insertTab del Form main
 FormTabStrip.InsertTab()
END

Ma avviamente l'errore è li da qualche parte....:cry:


Se la form dov'è la TabStrip si chiama FMain, perché
scrivi FormTabStrip?
Deve essere:

Codice: [Seleziona]
PUBLIC SUB Button1_Click()
'Collegamento alla Macro insertTab del Form main
 FMain.InsertTab()
END


e assicurati nelle proprietà del progetto che i controlli delle form
siano PUBLIC. ciao.
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 13 Febbraio 2008, 13:00:39
Citazione
Se la form dov'è la TabStrip si chiama FMain, perché
scrivi FormTabStrip?
Deve essere:


PUBLIC SUB Button1_Click()
'Collegamento alla Macro insertTab del Form main
 FMain.InsertTab()
END


e assicurati nelle proprietà del progetto che i controlli delle form
siano PUBLIC. ciao.


Hai ragione adesso funziona.
Grazie e ciao.
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 01 Aprile 2008, 22:00:56
Ciao a tutti, avrei bisogno di un aiutino, allora lavorando con le tabstrip mi ritrovo in questa situazione(probabilmente è una cosa semplice ma data la mia inesperienza e minima conoscenza, sto imparando, mi risulta come una cosa difficile) allora ho un form, nel quale ho un tasto e una textbox e una tabstrip con una sola pagina, ora al click del tasto mi aumenta di una pagina ma non ho capito come posso rinominarla, io scrivi cosi:
Codice: [Seleziona]
TabStrip1.Count = TabStrip1.Count +1
TabStrip.Text = TextBox3.Text

Ma, non va. chi mi aiuta?
Se volessi poi nominare una pagina che già esiste come dovrei fare?
E, un'ultima cosa, se volessi eliminare una pagina magari non l'ultima come faccio a farlo in base al testo della linguetta?
Ciao e grazie.
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: md9327 - 02 Aprile 2008, 09:50:14
Purtroppo la TabStrip è un'oggetto un pò ostico, e può presentare parecchi problemi se viene usato in modo dinamico.

Fai conto che sia un insieme di pannelli distinti, e uniti da una logica comune.

Per modificare una pagina (sempre che sia presente), devi prima posizionarti sulla medesima e modificarne le proprietà. Tieni presente che le proprietà che vedi, sono quelle della pagina corrente, per cui devi fare attenzione se per esempio, non sia presente alcuna pagina. La cosa provoca errore e ti và in crash il programma.

Come ti hanno suggerito nei precedenti post, la proprietà comune Count, ti permette di definire dinamicamente il numero di tab (o pagine) presenti, ma tieni presente che devi controllare sempre la Index per vedere dove sei realmente, e poter agire di conseguenza.

NOTA IMPORTANTE: Gli oggetti che crei dinamicamente in una tab, non vengono eliminati automaticamente quando elimini la tab che li contiene; purtroppo esiste un problema a livello di libreria che non ti permette neppure di eliminare gli oggetti manualmente, per cui rimane tutto appeso. L'unica soluzione che ho trovato è quella di riassegnare la parent di questi oggetti ad un'altro oggetto contenitore (magari nascosto), e poi cancellare la tab. Se non è chiara, spiegherò la nota più avanti.
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 02 Aprile 2008, 21:56:51
Grazie, però non ho ben capito una cosa, ritrovandomi sulla "linguetta" alla quale modificare il nome che tipo di codice dovrei inserire?
non ho ben capito il discorso dell'eliminazione delle pagine e dei vari oggetti in essa contenuti.
Grazie mille. Ciao.
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: tornu - 02 Aprile 2008, 22:59:09
Citazione

md9327 ha scritto:
NOTA IMPORTANTE: Gli oggetti che crei dinamicamente in una tab, non vengono eliminati automaticamente quando elimini la tab che li contiene; purtroppo esiste un problema a livello di libreria che non ti permette neppure di eliminare gli oggetti manualmente, per cui rimane tutto appeso. L'unica soluzione che ho trovato è quella di riassegnare la parent di questi oggetti ad un'altro oggetto contenitore (magari nascosto), e poi cancellare la tab. Se non è chiara, spiegherò la nota più avanti.


Scusa md9327 se intervengo sulla tua risposta, però riguardo il discorso della eliminazione manuale non mi torna qualcosa, nel senso:
se ho una TabStrip con 3 "pagine" (Tab0,Tab1,Tab2) ed ognuna contiene degli oggetti è vero che non posso eliminare una o più Tab diciamo "brutalmente", però con il seguente metodo è possibile, per esempio voglio eliminare Tab2, cancello tutti gli oggetti al suo interno e riporto indietro di una posizione la proprietà Count, nel caso volessi eliminare la Tab centrale (Tab1) eseguo la stessa procedura descritta prima, ma prima di riportare indietro Count clikko con il tasto dx del mouse sulla Tab e dal menu Sposta Tab seleziono ultimo poi elimino la Tab1.
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: md9327 - 03 Aprile 2008, 14:32:16
Per rispondere a Lux:

usa le due istruzioni che avevi scritto tu stesso.


Per rispondere a Tornu:

il problema di fondo è che in gambas non è presente ancora una vera logica di eliminazione degli oggetti, se non per alcuni casi.
Nel caso delle tab, anche se tu cancelli gli oggetti, la tab stessa mantiene i riferimenti in memoria a tali oggetti, per cui, quando si tenza la cancellazione della tab, ti abortisce a causa di riferimenti attivi.
Questa cosa, purtroppo, l'ho scoperta parecchio tempo addietro e, finora, non mi sembra che sia stata corretta.
Come hai descritto tu stesso, la logica sembra abbastanza normale: elimini gli oggetti, poi la tab, e poi ti punti sulla prima tab buona (tanto per non creare problemi, ovviamente). Questa cosa non funziona, almeno sinora, per la TabBox.

- Per alcuni oggetti esiste il medoto Delete(), per altri no;
- Se associ un'oggetto ad un Container, oltre ad avere la variabile che punta all'oggetto, lo ha anche il Container e, cancellare una variabile in Gambas (es. messa pure a NULL), non azzera anche gli altri puntamenti o elimina l'oggetto fisicamente in memoria, ma solo la variabile intesa come nome. Stesso problema anche per la variabile che ha effettivamente allocato la memoria per la creazione dell'oggetto.

In gambas tocca fare attenzione a queste cose, specialmente all'uso che si fà delle variabili (sia locali che pubbliche), perchè altrimenti si incorre in problemi come questi, oppure anche a errori di "circular reference" (che forse qualcuno ha potuto constatare in qualche messaggio di warning).
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 03 Aprile 2008, 19:31:27
Allora, il codice che inserisco
Codice: [Seleziona]
TabStrip1.count = TabStrip1.Count +1
TabStrip1.Caption = TextBox3.Text

Funziona a metà, cioè, mi inserisce la nuova pagina ma non la chiama col testo inserito nel textbox. La lascia vuota
Il testo del textbox lo usa per rinominare la pagina selezionata(che è l'unica esistente, dato che il mio programma ha per defautl una sola linguetta e poi dovrebbe dare la possibilità di inserirne delle nuove.
quindi credo d'aver capito che per rinominare la linguetta appena creata devo prima selezionarla e vorrei farlo in automatico ma non  ho capito come.
Ciao.
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: fsurfing - 03 Aprile 2008, 19:43:47
Codice: [Seleziona]
TabStrip1.count = TabStrip1.Count + 1
TabStrip1.Index = TabStrip1.count - 1
TabStrip1.Caption = textbox3.text



in questo modo a me funziona benissimo  :-)
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 03 Aprile 2008, 23:25:09
Ok, ci sono riuscito!
Ho inserito anche un codice al contrario in modo da eliminare un pagina con un  determinato nome che però non sia necessariamente l'ultima,
Codice: [Seleziona]
 TabStrip1.Count = TabStrip1.Count - 1  
TabStrip1.Index = Tabstrip1.Count - 1
 Tabstrip1.Caption = Textbox3.Text

e funziona.
Grazie.
PS: non ho capito però la questione sugli oggetti contenuti in una pagina....
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: md9327 - 04 Aprile 2008, 11:22:39
E' probabile che quanto ho scritto, non sia più un problema, ma all'epoca dell'uscita della 2.0.0 avevo rifatto delle prove e il problema con i tab dinamici c'era ancora.

Quello che volevo dire, in poche parole, è che la creazione dinamica di oggetti all'interno di una TabBox, e in particolare in corrispondenza con la creazione di nuove tab, ha dei problemi in cancellazione quando la tab viene poi rimossa.

La causa di ciò è causata dal fatto che la cancellazione della tab non elimina anche i suoi figli, almeno per quanto riguarda gli oggetti creati dinamicamente. Anche eliminandoli manualmente (es. con Delete() o var=NULL), questi rimangono referenziati all'interno della tab contenitrice e, se si prova ad eliminarla, il programma và in crash.

NOTA: Quando si creano oggetti all'interno di un contenitore (come ad esempio una TabBox), per poter gestire gli eventi dei singoli oggetti, è necessario agganciarli al contenitore stesso; per questa operazione viene usato un metodo di Object:

Codice: [Seleziona]
Attach(, , )


in questo modo tutti gli eventi dei nuovi oggetti verranno catturati dal suo contenitore, e si può quindi gestire dinamicamente il giochetto.
Quando l'oggetto dinamico non serve più, è necessario fare l'operazione contraria, con un'altro metodo statico di Object:

Codice: [Seleziona]
Detach()


fatto ciò, l'oggetto si può eliminare, agendo in due modi:

Codice: [Seleziona]

.Delete()
= NULL


La cosa è abbastanza normale, e ha anche una logica seguita nella maggior parte di altri linguaggi; ma il problema invece è che, per motivi non meglio identificati, il riferimento all'oggetto cancellato viene mantenuto dagli oggetti cui ha fatto parte, rendendo problematica una eventuale eliminazione di questi ultimi.

Spero di aver girato meglio il discorso; se poi qualcuno ha avuto diversa esperienza, o ha trovato qualche trucco per risolvere, ben venga.

Bye
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 04 Aprile 2008, 14:44:29
Codice: [Seleziona]
Ok, ci sono riuscito!
Ho inserito anche un codice al contrario in modo da eliminare un pagina con un determinato nome che però non sia necessariamente l'ultima,

[code]TabStrip1.Count = TabStrip1.Count - 1  
[code]TabStrip1.Index = Tabstrip1.Count - 1

 Tabstrip1.Caption = Textbox3.Text[/code]

e funziona.[/code]

Purtroppo devo rimangiarmi le parole il codice non elimina la pagina indicata dal textbox ma solamente la penultima, come si nota dal codice
Codice: [Seleziona]
TabStrip1.Index = Tabstrip1.Count - 1
che se ho ben capito mi sposta sulla penultima linguetta
soluzioni?

Se ho ben capito il problema dei tab dinamici e degli oggetti in esso inseriti si ha se questi vengono inseriti solo a livello di codice ma se invece li inserisco io  prima (quindi senza il codice) questo problema non dovrei averlo?
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: md9327 - 04 Aprile 2008, 17:16:07
Bè, dato che disegni staticamente gli oggetti, e se non devi toglierli e crearli dinamicamente, allora funziona tutto.

Ti ricordo che gli indici dei tab, partono da 0 (zero), fino a TabBox.Count - 1, per cui se elimini una tab, devi capire dove poi devi posizionarti, tenendo presente che il contatore ovviamente si decrementa.

La cosa che devi assolutamente controllare, è se per caso non esistano più tab, nel qual caso che fai ? Credo che a questo punto ti tocca nascondere la TabBox (Visible=FALSE), e magari ritornare a visualizzarla alla successiva creazione di una tab.
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 05 Aprile 2008, 23:40:07
No, non va come vorrei....disiamo che io ho creato 5 linguette e volessi eliminare la terza, come mi ritrovo ora dovrei selezionare quella accanto (la quarta) per eliminare appunto la 3... altrimenti?
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: md9327 - 07 Aprile 2008, 13:37:39
Se tu elimini la 3, la quarta diventa terza, la quinta quarta, e così via...
Quindi la terza te la trovi sempre, solo che non è la stessa di prima.
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 08 Aprile 2008, 17:29:58
mmmm...non l'ho capita... io ho 5 linguette nominate in questo modo:
luigi, antonio, marco, andrea, ugo
diciamo che voglio eliminare marco, tu mi dici che lo elimino?
io mi ritrovo in questo modo:
luigi, antonio, marco, andrea
??????
Sto impazzendo....
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: md9327 - 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 ?
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 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.
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: g.paolo - 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
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: fsurfing - 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
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: fsurfing - 09 Aprile 2008, 18:56:40
se aggiungi

WAIT 0.1

DOPO

 TabStrip1.Index = i

ottieni un carino effetto scorrimento delle schede
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 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?
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: fsurfing - 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
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 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....
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: fsurfing - 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. :-(
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 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....
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: fsurfing - 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?
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: Lux - 12 Aprile 2008, 15:27:02
Sul TabStrip, tasto destro del mouse e vai su sposta tab....
In questo modo sposti le linguette...
Titolo: Re: Aggiungere pagine ad un Tabstrip via codice
Inserito da: vuott - 13 Dicembre 2013, 17:21:53
Segnalerei questa pagina della nostra WIKI:

https://www.gambas-it.org/wiki/index.php/Aggiungere_successivamente_linguette_via_codice_in_una_TabStrip