Jump to content
PLC Forum


Sign in to follow this  
75gianni75

Combobox Multiple Si Può?

Recommended Posts

75gianni75

ciao ragazzi mi sto appassionando cn visual basic e volevo creare questo progettino ma non riesco a far salvare il tutto ( cioè quando chiudo il programma e lo riapro le liste si cancellano) c'è un modo per salvare la lista delle combobox in modo che quando riapro il programma si carica la lista ?

e di cancellare un singolo nome nella combobox oppure anche tutta la lista di una combobox e uguale,grazie mille.

ComboBox1.Items.Add(TextBox1.Text)
TextBox1.Text = ""
MsgBox("you have selected" + ComboBox1.Text)
ComboBox1.Items.Clear()
ComboBox1.Text = ""
29pyvps.jpg
questo codice lo inserisco su ogni gruppo che vedete ma non si salvano alla riapertura.

Share this post


Link to post
Share on other sites

lucios

Ciao,

scusa ma non ho capito quello che vuoi fare...

Per riempire le combo box ci sono 2 metodi: da codice (con Items.Add come nell'esempio che hai fatto) o a design time tramite le proprietà.

Vuoi salvare gli indici nelle combo box come sono settati per riavere la stessa situazione ad un nuovo riavvio dell'applicazione?

Se è così puoi salvare la situazione in un file o nel registry di Windows e rileggerle all'avvio.

Share this post


Link to post
Share on other sites
75gianni75

ciao lucios grazie della risposta immediata, quella di sinistra texbox io inserisco un nome clicco aggiungi e lo salva sulla combo di destra

e via dicendo. ho guardato da un video ma sul video lui fa solo una texbox e una combobox , ima quando richiudo il programma e lo riapro praticamente non resta nulla di salvato.

a me serve che questa piccola applicazione che se la passo su un altro pc il programma quando vado a cliccare su aggiungi lui mi crea automatico una cartella in c contenente il file txt dei nomi e li ricarica quando si avvia il programma ,non so se posso postare il link del video per regolamento.grazie

(si vorrei salvare la situazione all' nuovo riavvio ma in modo che se clicco cancello mi cancella un solo nome selezionato dalla combo oppure cancellare tutta la lista di una combo e uguale fa nulla.grazie

Share this post


Link to post
Share on other sites
lucios

Ricapitolando:

tu vuoi scrivere qualcosa nei textbox di sinistra e vuoi che quello che hai scritto venga aggiunto nella rispettiva combobox di destra. Inoltre vuoi salvare i dati immessi per averli anche quando installi l'applicazione su un altro pc, ho capito bene?

Allora, per copiarli nelle combobox basta che usi il metodo "Items.Add" come mi pare tu abbia già fatto.

Per salvare i dati, l'unico modo è di scriverli su un file quando termini l'applicazione (o aggiungendo un tasto di salvataggio). Per salvare questo tipo di dati potresti usare un semplice file di testo separando, per esempio, i vari campi con dei caratteri predefiniti (tipo virgola per intenderci). Io però userei una soluzione più elegante salvando il tutto in un file formato XML, così è anche più facile recuperare i dati.

Tu sai come leggere e scrivere dati su file vero?

Ovviamente, quando trasferirai l'applicazione su un altro pc, dovrai trasferire anche il file suddetto.

All'avvio andrai a leggere il file XML per ripopolare i combobox.

Ciao

Share this post


Link to post
Share on other sites
75gianni75

Ovviamente, quando trasferirai l'applicazione su un altro pc, dovrai trasferire anche il file suddetto: questo non e un problema perche ogni pc utente si crea la sua lista preferita ma basta che poi si salva su quel pc.

opiarli nelle combobox basta che usi il metodo "Items.Add" come mi pare tu abbia già fatto: questo ci sono riuscito solo che chiudendo il programma se lo riapro non ci sono più liste.

ho visto anche un video che lui inserisce questa stringa nel form principale ma a me da sempre errore sul simbolo lista_account

If My.Computer.FileSystem.DirectoryExists("c:\salvataggio\") = False Then
My.Computer.FileSystem.CreateDirectory("c:\salvataggio id\")
End If
If My.Computer.FileSystem.FileExists("c:\salvataggio\log.txt") = False Then
Dim scrivi As New IO.StreamWriter("c:\salvataggio\log.txt")
scrivi.Close()
Else
Dim carica As New IO.StreamReader("c:\salvataggio\log.txt")
While carica.Peek > -1
lista_account.items.add(carica.ReadLine())
End While

carica.Close()
non so se questo puo essere utile per me ?
non sono bravo e poco che mi sto avventurando e non nego che mi piace farlo ;-) grazie ancora lucios
Edited by TECHMADE

Share this post


Link to post
Share on other sites
lucios

ho visto anche un video che lui inserisce questa stringa nel form principale ma a me da sempre errore sul simbolo lista_account

Non ho visto quel video ma probabilmente lista_account è il nome di una combobox, la tua probabilmente si chiama in un altro modo.

Comunque mi pare di capire che sei alle prime armi con Visual Basic (a proposito, che versione stai usando?), quindi ti conviene studiarti un po' di manualistica di base prima di continuare, perchè il metodo di copiare pezzi di software trovati in rete senza capirli non è quello giusto. Rischi di perdere tempo e basta.

Ti consiglio di provare con applicazioni semplici, magari inserendo pochi controlli in un form, e provare a giocarci un po' prendendo famigliarità con le proprietà e gli eventi.

Una curiosità: ma a che tipo di applicazione stai pensando? Perchè hai deciso di utilizzare combobox?

Ciao

Share this post


Link to post
Share on other sites
75gianni75

certamente cercherò di seguire e capire pian piano da qualche guida scritta oltre a qualche video che spiega bene.

pero visto che mi serviva subito quel app fatta cosi da me volevo farla infretta

la versione e 2010

non so se si può aggiungere un link nel caso chiedo scusa e si rimuove

praticamente lui ne crea una serie io più serie

ma mi serve che salvano

youtube .com/watch?v=1tBqU513nUQ

Edited by TECHMADE

Share this post


Link to post
Share on other sites
Casimiro Sarluca

Bisogna avere pazienza, non sempre le soluzioni sono a portata di mano, probabile che chi può suggerirti qualcosa non ha avuto tempo o non ha una soluzione.

Evita di sollecitare una risposta.

Share this post


Link to post
Share on other sites
JumpMan

Puoi spiegare meglio a cosa ti serve? Magari va meglio Access....

Share this post


Link to post
Share on other sites
75gianni75

grazie jump e scritto sopra mi serviva far in modo che quel form salvasse i file su disco creando documenti di testo .

Share this post


Link to post
Share on other sites
JumpMan

Questo l'avevo capito, ma non ho capito nello specifico a cosa serve, magari ci sono soluzioni migliori senza usare le combobox.

Share this post


Link to post
Share on other sites
75gianni75

ciao jump mi servirebbe creare tipo una texbox affiancata da una combobox nella texbox inserisco un nome e me lo salva sulla combo e via dicendo in modo da avere una rubrica di nomi in lista aprendo la combobox.

ma con varie text e combo in modo da aggiungere varie selezioni tipo

italia (giovanni 545878) questo va in combo invece italia un label.

francia ( antonio 458999 .........................

Share this post


Link to post
Share on other sites
JumpMan

Come ti ha già detto lucios devi appoggiarti ad un file esterno per salvare i dati e ripopolare le combobox ogni volta che apri la form.

Anche se questa cosa la vedo ancora come un database per cui ritengo che Access sia la sua morte ti faccio lo stesso un esempio di come ripopolare le combo all'apertura della form.

Ti ilustro il metodo più semplice che mi viene in mente, non storcano il naso i programmatori VB :smile:

Partiamo dal presupposto che tu abbia già un file di testo che si chiama dati.csv nella stessa cartella della tua applicazione, quindi creati questo file con notepad e scrivi:

0,MONICA FISAR,3242432
0,THOMAS SACRATO,56646
1,RINO CERONTE,232144124
0,ALFREDO DAL CALDO,1241241

Il secondo presupposto è che le tue combobox, le tue label e le tue text facciano parte di un array

Al caricamento della form dovrai leggere il file per ripopolare le combo:

Private Sub Form_Load()
    Label1(0) = "Italia"
    Label1(1) = "Francia"
    
    PercorsoApp = CurDir
    FileDati = PercorsoApp & "\dati.txt"
    FileBak = PercorsoApp & "\dati.bak"
        
 
    Dim ff As Integer
    Dim Linea As String
    Dim IdNazione As Integer
    Dim Nome As String
    Dim Numero As String
    
    ff = FreeFile
    
    On Error Resume Next
    Open FileDati For Input As ff
     
    If Err.Number = 0 Then
        On Error GoTo 0
             
        While Not EOF(ff)
            Input #(ff), IdNazione, Nome, Numero
            Combo1(IdNazione).AddItem (Nome & " " & Numero)
        Wend
    Else
        ' Eventuale gestione errore
    End If
End Sub 

Se hai seguito queste istruzioni ti ritroverai 3 nomi nella prima combo e uno nella seconda :thumb_yello:

Ovviamente alla chiusura della form dovrai effettuare l'operazione inversa, ti consiglio di rinominare prima il file dati.txt in dati.bak e poi scrivere un nuovo file dati.txt con i nomi presenti nelle combo.

Edited by JumpMan

Share this post


Link to post
Share on other sites
lucios

Tutto giusto eccetto questo:

Il secondo presupposto è che le tue combobox, le tue label e le tue text facciano parte di un array

In VB.Net gli array di controlli non sono più possibili (almeno a design time), esistono tuttavia delle tecniche che permettono di fare ciò.

Consiglio di leggere questo interessante post http://forum.masterdrive.it/visual-basic-net-18/faq-controlli-60214/#6 che riassume una serie di questioni inerenti all'argomento, soprattutto per chi è abituato a lavorare in VB6.

Ciao

Share this post


Link to post
Share on other sites
JumpMan

Io infatti ho VB6, dove si capisce che lui usa .Net ? dalla grafica della form ?

Comunque peccato, hanno tolto una bella funzionalità

Share this post


Link to post
Share on other sites
JumpMan

Nel suo caso, visto che mi sembra inesperto e che gli oggetti sono solo 7 credo sia più semplice sostituire queste istruzioni:

            Combo1(IdNazione).AddItem (Nome & " " & Numero)

Con queste:

Select case IdNazione
   Case 0
     Combo0.AddItem (Nome & " " & Numero)
   Case 1
     Combo1.AddItem (Nome & " " & Numero)
   Case 2
     Combo2.AddItem (Nome & " " & Numero)
   Case 3
     Combo3.AddItem (Nome & " " & Numero)
   Case 4
     Combo4.AddItem (Nome & " " & Numero)
   Case 5
     Combo5.AddItem (Nome & " " & Numero)
   Case 6
     Combo6.AddItem (Nome & " " & Numero)
   Case 7
     Combo7.AddItem (Nome & " " & Numero)
end select

Non sarà elegante ma funziona ;)

Edited by JumpMan

Share this post


Link to post
Share on other sites
75gianni75

grazie ragazzi vediamo come posso capirci qualcosa vi terrò aggiornati grazie ;-)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...