robinhood (Normal User)
Newbie
Messaggi: 8
Iscritto: 02/06/2009
|
Ciao Forum
ho ripreso un vecchio programma in vb5 di qualche anno fa e volevo un po
rinfrescarlo.
Questo mio programma usa un database fatto di Text Files.
Vi sono 3 'campi' formati da textbox
Nome.text
Cognome.text
Indirizzo.text
I files sono tutti salvati nella cartella APP.Path\Indirizzi ognuno con proprio nome.(.txt)
Posso salvare e rileggere questi Text Files senza problema e mostrarli nelle textbox.
Io volevo adesso che il contenuto di questi Text Files mi vengano mostrati in una
MSFLEXGRID.
Non il contenuto di un files soltanto , ma il programma dovrebbe leggere, premendo su un commbutton, tutta la directory APP.Path\indirizzi e quindi popolare la flexgrid con i dati di tutti i records.
Io ho naturalmente provato, pur non essendo pratico di flexgrid.
Ho provato cosi:
Msflexgrid1.textmatrix(1,1) = Nome.text
Msflexgrid1.textmatrix(1,2) = Cognome.text
Msflexgrid1.textmatrix(1,3) = Indirizzo.text
purtroppo questa routine mi mostra nella FlexGrid soltanto il record che ho caricato
tramite la routine di Load-save.
Io invece vorrei che tutti i records presenti in APP.PATH\indirizzi vengano insezriti nella flex.
In questo modo:
-----------------Nome Cognome Indirizzo
Nome File xxxxxx xxxxxxxx xxxxxxx
Nome File xxxxxx xxxxxxx xxxxxx
ecc.
Ovviamente anche inserendo nuovi files la flexgrid dovrebbe automaticamte aggiornarsi
Io suppongo che oltre alla flexgrid debba impostare un ciclo for/next di lettura, ma non vi riesco.
Puo aiutarmi qualcuno a migliorare la mia routine per ottenere quanto detto?
Grazie
RobinHood
se necessario posso postare il codice di Save-Load che uso per salvare i textFiles
Ultima modifica effettuata da robinhood il 02/06/2009 alle 9:47 |
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
per sapere i file presenti nella cartella indirizzi ci sono vari modi... personalmente userei un filelistbox... poi con un ciclo for prendi ciascun file e lo carichi sulla msflexgrid...
se hai problemi dimmi cosa non sai fare
|
|
robinhood (Normal User)
Newbie
Messaggi: 8
Iscritto: 02/06/2009
|
Beh, in questo caso confesso non so proprio cosa fare, altrimenti avrei
postato un po di codice in piu !
Per ottenere quanto chiesto ho solo provato con quello postato
della flexgrid. Poca cosa, ma é La prima volta che ho usato quel controllo.
Dico anche che credevo di esserci riuscito, con quella piccola routine. Poi mi sono accorto che non caricava TUTTI i file come pensavo.
Diciamo che fino adesso , con la mia routine (che non ho postato)
creo dei file testo e li salvo con nome.
Insomma come sta la situazione un po di codice pratico sarebbe il benvenuto,
per caricare nella flex tutti i file presenti in APP.Path\Indirizzi
Qualunque sia il metodo (con filelist, e poi con flexgrid....)
(Se possibile, in modo da poter chiudere questo ,programma)
grazie per l'attenzione, GRG
robin hood
(ripeto se necessario posto la mia routine di creazione load-save
text file.)
Ultima modifica effettuata da robinhood il 02/06/2009 alle 13:10 |
|
robinhood (Normal User)
Newbie
Messaggi: 8
Iscritto: 02/06/2009
|
Salve.
Usando un File ListBox , come consigliato da GRG, riesco adesso a visualizzare
tutti i TextFile della directory Frequenze.
Codice sorgente - presumibilmente VB.NET |
Private Sub File1_Click() Dim FileSelezione As String FileSelezione = File1.Path & "" & File1.FileName End Sub
|
Naturalmente uso anche un DirListBox per scegliere la giusta directory.
Adesso devo popolare la flexGrid completamente tramite il FileListBox ed un ciclo.
Puo qualcuno drmi una mano in questo senso ?
grazie
robinhood
Ultima modifica effettuata da robinhood il 02/06/2009 alle 20:54 |
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
allora...
la proprietà file1.listcount restituisce il numero di righe presenti nella lista (ma parte da -1 il conteggio)
la proprietà file1.list(numero) restituisce la stringa presente alla riga numero. Quindi per fare un ciclo basta scrivere:
Codice sorgente - presumibilmente VB.NET |
dim x as integer, file as string for x = 0 to file1.listcount -1 'resto next x
|
dove c'è "'resto" bisogna inserire il codice per aprire i file, leggerne il contenuto e inserirli nella msflexgrid...
hai detto già di avere un codice per leggere e salvare i files, però non so come lavora... quello che ti consiglierei è di aprire il file leggere riga per riga ed a ogni riga splittarla (usando come carattere separatore lo spazio) e inserirla nella msflexgrid...
per aprire i file devi usare la Open, altrimenti fammi vedere come lavora la tua istruzione load-save. Per inserire i dati in una msflexgrid basta dargli colonna, riga e testo...esempio:
Codice sorgente - presumibilmente Plain Text |
msflexgrid1.col = 1
msflexgrid1.row = 1
msflexgrid1.text = "ciao"
|
Scriverai così nella riga 1 della prima colonna ciao |
|
robinhood (Normal User)
Newbie
Messaggi: 8
Iscritto: 02/06/2009
|
Grazioe dell'intervento.
Per chiarezza ti scrivo pure il mio codice che uso per load-save il file testo, cosi avrai tutto chiaro
Codice sorgente - presumibilmente VB.NET |
Private Type MyFile Text1 As String Text2 As String Text3 As String End Type Public Sub LoadFile(FileName As String) Dim Bestand As MyFile Open FileName For Binary Access Read As #File Get #File, , Bestand Close #File Nome.Text = Bestand.Text1 Cognome.Text = Bestand.Text2 Indirizzo.Text = Bestand.Text3 End Sub Public Sub SaveText(FileName As String) Dim Bestand As MyFile Bestand.Text1 = Nome.Text Bestand.Text2 = Cognome.Text Bestand.Text3 = Indirizzo.Text Open FileName For Binary Access Write As File Put #File, , Bestand Close #File End Sub
|
Sto leggendo le tue indicazioni per il ciclo.
Il fatto di splittare non l'ho ben capito
Perdonami se ritornero' ancora, ma come detto é la prima volta con la flex.
Domani testero' il tutto.
Volevo solo ripetere che io dopo mostrato i files testi tutti, nella filelistbox,
il mio scopo é visionare TUTTI i files contemporaneamente nella flex.
Quindi anche i titoli dovranno stare al posto giusto.
Se hai ancora qualche indicazione puoi dramela. Io domani testero' i tuoi consigli e poi vedremo;
grazie
robinhood
Ultima modifica effettuata da robinhood il 02/06/2009 alle 22:13 |
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
i file txt come sono strutturati?
in questo modo:
xxx xxx xxx
xxx xxx xxx
ecc...
???
|
|
robinhood (Normal User)
Newbie
Messaggi: 8
Iscritto: 02/06/2009
|
Si, esattamente
xxx xxx xxx
xxx xxx xxx
quindi la flex dovrebbe mostrali cosi
Nome Cognome indirizzo
Nomefile xxx xxx xxx
Nomefile xxx xxx xxx
...
....
per uno che non ha mai lavorato con questo controllo
credo non sia semplice
robinh
Ultima modifica effettuata da robinhood il 02/06/2009 alle 22:52 |
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
mm..non ho capito come intendi visualizzare tutti i file contemporaneamente... cioè tu li vuoi mettere nella list uno sotto l'altro? O.o
comunque ecco qui un esempio che carica i dati di ogni file uno sotto l'altro nella msflexgrid:
Codice sorgente - presumibilmente Delphi |
Dim x As Integer, file As String, b as integer, str(1 to 1000) as string For x = 0 To file1.listcount -1 'scorre la lista file = file1.list(x) 'legge uno ad uno ogni elemento della lista open "percorso\" & file for input as #1 'legge il file do 'inizia il ciclo... b = b + 1 line input #1, str(b) 'prende riga x riga del file... dim tmp() as string tmp = split(str(b), " ") 'separa le 3 parole dallo spazio msflexgrid1.row = b '"seleziona" la riga msflexgrid1.col = 1 'nella prima colonna (non mi ric. se parte da 0 o 1 il conteggio...) msflexgrid1.text = tmp(0) 'inserisce la prima parola nella 1° colonna msflexgrid1.col = 2 '"seleziona" la 2° colonna msflexgrid1.text = tmp(1) 'inserisce la seconda parola nella 2° colonna msflexgrid1.col = 3 'seleziona la 3° colonna msflexgrid1.text = tmp(2) 'inserisce la terza parola nella 3° colonna doevents loop until eof(1) = true '...finchè non arriva alla fine del file close #1 doevents Next x
|
Per chiarimenti posta
p.s. oggi sono MOLTO impegnato quindi non so se in caso di problemi riuscirò a risponderti ...
|
|