Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: dex - 17 Novembre 2009, 21:28:32

Titolo: [RISOLTO]Editare Tableview
Inserito da: dex - 17 Novembre 2009, 21:28:32
Ciao raga

sono alle prese con l'ennesimo problema e mi serve un vostro aiuto.

ho una tableview che con edit riesco ad editare le singole celle, ma appena ne esco i dati vengono cancellati.

come si fà a rendere permanenti i dati inseriti?
Titolo: Re: Editare Tableview
Inserito da: Golia - 17 Novembre 2009, 22:56:02
Non ho mai usato TableView, però penso che per memorizzare i dati devi comunque metterli nel database.
Interessa anche a me, quando ho tempo provo a guardare nel frattempo se risolvi fammi sapere
Titolo: Re: Editare Tableview
Inserito da: dex - 17 Novembre 2009, 23:01:05
il problema è proprio l'immissione dei dati

io dovrei usare tableview per immettere i dati e poi salvarli nel database.

ora caricarli o salvarli nel database non è un problema, ma l'issione si, la cosa strana è che fa immettere dati ma non li conserva quando la cella perde il focus
Titolo: Re: Editare Tableview
Inserito da: Golia - 17 Novembre 2009, 23:07:16
Non so come funziona, se si jnterpreta come una gridview che ogni riga è un record e che ogni colonna è un campo ad ogni spostamento basterebbe aggiornare il database...non saprei
Certo che sarebbe prorpio comodo inserire i dati così
Titolo: Re: Editare Tableview
Inserito da: dex - 17 Novembre 2009, 23:16:33
per caricare i dati tableview funziona come GridView, quindi anche salvarli è altrettanto semplice.

vedi esempio
Titolo: Re: Editare Tableview
Inserito da: Golia - 18 Novembre 2009, 23:24:44
Interessante... provo a vedere meglio collegandomi al database, ..quando ho un pò di tempo :-D  se risolvi fammi sapere , ciao
Titolo: Re: Editare Tableview
Inserito da: dex - 18 Novembre 2009, 23:29:14
la soluzione in parte la conosco, è la stessa che usavo con visualbasic per inserire i dati nelle griglie, soluzione un pò macchinosa e laboriosa.
intercettare i tasti caricarli in una stringa e scaricarli nella cella

pensavo che con tableview sarebbe stato più semplice.

cmq ti tengo aggiornato
Titolo: Re: Editare Tableview
Inserito da: md9327 - 19 Novembre 2009, 01:57:19
Ora non mi sono messo a guardare nella doc, ma penso che la conferma delle variazioni fatte in una cella, sia da intercettare con un evento (magari un lostfocus). Dopodiche, il passo successivo credo sia abbastanza semplice.

Forse ho capito male, ma credo che intercettare la pressione dei tasti, sia un pò artificiosa e lenta... ma forse ho capito male...
Titolo: Re: Editare Tableview
Inserito da: dex - 19 Novembre 2009, 14:51:22
@ md9327

no non hai capito male, l'intecettazione dei tasti era una procedura che usavo in visualbasic,  nelle griglie dove non era possibile inserire direttamente nelle celle.

tableview è diverso permette l'inserimento.

avevo pensato pure io al lostfocus, solo che mi chiedevo come fosse possibile avere l'indirizzo della cella?

ho considerato anche last, ma non so se le celle della tableview vengono considerate come gruppo.
appena ho un pò di tempo mi metto all'opera.
Titolo: Re: Editare Tableview
Inserito da: Golia - 19 Novembre 2009, 22:27:41
In teoria io farei così
Carico i dati dal database nella griglia, in più metto una riga vuota. Se il daatabase è vuoto, solo la riga vuota. ad ogni spostamento aggiorno il database e ricarico la griglia, se aggiungo qualcosa nella riga vuota, aggiungo un record al database e quando ricarico aggiunge sempre un'altra riga... :-?  credo sia così..
Titolo: Re: Editare Tableview
Inserito da: md9327 - 19 Novembre 2009, 23:13:58
Perdona, ma il tuo discorso mi ha incasinato il cervello... :-)
...forse è colpa dell'ora...

La cella su cui sei puntato, si può risolvere interrogando Row e Column, che dovrebbero riportati la cella corrente. Stessa cosa con la posizione del mouse, credo ci siano le funzioni che permettono di decodificarla in coordinate testuali.

COmunque, dovresti provare con l'evento Change, che forse si scatena quando il contenuto cambia (es. con il tasto enter).

A suo tempo, avevo creato un piccola logica che, come già fatto in altri linguaggi, utilizzava un campo di testo, che appariva esattamente sulla cella desiderava, quando volevo modificarla, e scompariva alla fine. Questo, intercettando solo determinati tasti, mi permetteva di capire quando volevo uscire, fare le dovute validazioni, le conversioni, e infine aggiornare la cella della griglia.

Ad oggi non uso neanche più questo sistema, ma non uso neppure il sistema fornito da GridView, preferendo logiche più semplici, che non cercano di utilizzare lo stesso controllo per tutto.
Titolo: Re: Editare Tableview
Inserito da: dex - 19 Novembre 2009, 23:53:57
@golia

considera che con il tempo il database aumenta molto di dimensioni e in questo caso caricare di continuo dal database sovraccarica inutilmente le risorse.

la soluzione è più semplice nell'evento keypress o change si carica in una variabile il contenuto della cella, nell'evento lostfocus o leave si scarica la variabile nella cella.

per ora è pura teoria non ho avuto modo di verificare

@md9327

Codice: [Seleziona]
A suo tempo, avevo creato un piccola logica che, come già fatto in
 altri linguaggi, utilizzava un campo di testo, che appariva esattamente
 sulla cella desiderava, quando volevo modificarla,
e scompariva alla fine.


avevo fatto la stessa cosa ma con le combo, le facevo diventare visibili solo quando mi trovavo su alcune celle e scomparivano all'uscita.
qui dovevo fare la stessa cosa ed avevo cominciato con una griglia, poi ho visto tableview e pensavo che fosse più semplice.
Titolo: Re: Editare Tableview
Inserito da: dex - 20 Novembre 2009, 01:29:43
raga risolto

basta aggiungere:

Codice: [Seleziona]
PUBLIC SUB TableView1_Save(Row AS Integer, Column AS Integer, Value AS String)

 TableView1[row, column].text = value

END
Titolo: Re: Editare Tableview
Inserito da: Golia - 20 Novembre 2009, 09:25:51
@md9327
Citazione
Perdona, ma il tuo discorso mi ha incasinato il cervello...

 :-) si si, ormai non mi capisco più neanch'io :-)

@desadex
Faresti un'esempietto?
Titolo: Re: Editare Tableview
Inserito da: dex - 20 Novembre 2009, 14:39:39
@Golia

prova questa tableview funzionante
Titolo: Re: [RISOLTO]Editare Tableview
Inserito da: Golia - 20 Novembre 2009, 15:08:26
Ti ringrazio per questo e anche per le anteprime di stampa , stasero li guardo
Titolo: Re: [RISOLTO]Editare Tableview
Inserito da: Golia - 22 Novembre 2009, 00:45:38
Sto provando tableview con sqlite, e funziona il salvataggio dei dati.
Mi vuole però una funzione che mi inserisca una nuova riga nel tableview quando vado a scrivere nell'ultima in modo che posso creare un nuovo record ad ogni riga che aggiungo.

Mi spiego meglio.
 Ho creato un database con 3 record, quando apro tableview ho 3 righe con i dati dei 3 record. Con un pulsante salva aggiorno i record, solo che se devo aggiungere record mi ci vuole una riga nuova. Potrei fare un pulsante ma.. sarebbe meglio che restasse sempre una riga vuota sotto e che quando va modificata ne crea un'altra


edit: intanto ho fatto questo
Titolo: Re: [RISOLTO]Editare Tableview
Inserito da: dex - 22 Novembre 2009, 03:04:29
controlla la posizione del cursore o della riga in sui stai inserendo

poi fai

if posizionecursore = totalerighe -1 then avvia una sub o una funzione
Titolo: Re: [RISOLTO]Editare Tableview
Inserito da: Golia - 23 Novembre 2009, 11:41:32
In teoria ho capito, in pratica no :-(
Come faccio a spere che sono nell'ultima riga? Hai il codice?
Titolo: Re: [RISOLTO]Editare Tableview
Inserito da: dex - 23 Novembre 2009, 20:05:34
prova se va bene