Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Popolare una FlexGrid  leggendo i records in una cartella
Forum - Visual Basic 6 - Popolare una FlexGrid leggendo i records in una cartella

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
robinhood (Normal User)
Newbie


Messaggi: 8
Iscritto: 02/06/2009

Segnala al moderatore
Postato alle 9:46
Martedì, 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
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 12:45
Martedì, 02/06/2009
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

PM Quote
Avatar
robinhood (Normal User)
Newbie


Messaggi: 8
Iscritto: 02/06/2009

Segnala al moderatore
Postato alle 13:09
Martedì, 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
PM Quote
Avatar
robinhood (Normal User)
Newbie


Messaggi: 8
Iscritto: 02/06/2009

Segnala al moderatore
Postato alle 20:50
Martedì, 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

  1. Private Sub File1_Click()
  2. Dim FileSelezione As String
  3. FileSelezione = File1.Path & "" & File1.FileName
  4. 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
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 21:54
Martedì, 02/06/2009
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

  1. dim x as integer, file as string
  2. for x = 0 to file1.listcount -1
  3. file = file1.list(x)
  4. 'resto
  5. 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

  1. msflexgrid1.col = 1
  2. msflexgrid1.row = 1
  3. msflexgrid1.text = "ciao"



Scriverai così nella riga 1 della prima colonna ciao

PM Quote
Avatar
robinhood (Normal User)
Newbie


Messaggi: 8
Iscritto: 02/06/2009

Segnala al moderatore
Postato alle 22:08
Martedì, 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

  1. Private Type MyFile
  2. Text1  As String
  3. Text2 As String
  4. Text3 As String
  5. End Type
  6.  
  7. Public Sub LoadFile(FileName As String)
  8. Dim File As Long
  9. Dim Bestand As MyFile
  10.  
  11. File = FreeFile
  12. Open FileName For Binary Access Read As #File
  13. Get #File, , Bestand
  14. Close #File
  15. Nome.Text = Bestand.Text1
  16. Cognome.Text = Bestand.Text2
  17. Indirizzo.Text = Bestand.Text3
  18.  
  19. End Sub
  20.  
  21. Public Sub SaveText(FileName As String)
  22. Dim File As Long
  23. Dim Bestand As MyFile
  24. Bestand.Text1 = Nome.Text
  25. Bestand.Text2 = Cognome.Text
  26. Bestand.Text3 = Indirizzo.Text
  27. File = FreeFile
  28. Open FileName For Binary Access Write As File
  29. Put #File, , Bestand
  30. Close #File
  31. 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
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 22:17
Martedì, 02/06/2009
i file txt come sono strutturati?
in questo modo:
xxx xxx xxx
xxx xxx xxx
ecc...

???

PM Quote
Avatar
robinhood (Normal User)
Newbie


Messaggi: 8
Iscritto: 02/06/2009

Segnala al moderatore
Postato alle 22:51
Martedì, 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
PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 15:10
Mercoledì, 03/06/2009
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

  1. Dim x As Integer, file As String, b as integer, str(1 to 1000) as string
  2. For x = 0 To file1.listcount -1 'scorre la lista
  3. file = file1.list(x) 'legge uno ad uno ogni elemento della lista
  4. open "percorso\" & file for input as #1 'legge il file
  5. do 'inizia il ciclo...
  6. b = b + 1
  7. line input #1, str(b) 'prende riga x riga del file...
  8. dim tmp() as string
  9. tmp = split(str(b), " ") 'separa le 3 parole dallo spazio
  10. msflexgrid1.row = b '"seleziona" la riga
  11. msflexgrid1.col = 1 'nella prima colonna (non mi ric. se parte da 0 o 1 il conteggio...)
  12. msflexgrid1.text = tmp(0) 'inserisce la prima parola nella 1° colonna
  13. msflexgrid1.col = 2 '"seleziona" la 2° colonna
  14. msflexgrid1.text = tmp(1) 'inserisce la seconda parola nella 2° colonna
  15. msflexgrid1.col = 3 'seleziona la 3° colonna
  16. msflexgrid1.text = tmp(2) 'inserisce la terza parola nella 3° colonna
  17. doevents
  18. loop until eof(1) = true '...finchè non arriva alla fine del file
  19. close #1
  20. doevents
  21. Next x



Per chiarimenti posta :k:

p.s. oggi sono MOLTO impegnato quindi non so se in caso di problemi riuscirò a risponderti ...

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo