Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    38

    quale controllo conviene utilizzare...?

    Quale controllo mi conviene utilizzare per mostrare all'utente dei titoli di programmi televisivi?

    L'utente deve poter selezionare il nome di ciascun programma, che dovrebbe evidenziarsi, ma non deve poter modificare il contenuto!

    Inoltre una volta selezionato un nome, premendo il tasto corrispondente gli verranno date ulteriori informazioni (ad esempio con un file audio) su quel programma!

  2. #2
    una listbox

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    38

    mi correggo

    Mi ero dimenticato di specificare che oltre il nome della trasmissione devo mostrare il canaleTV e l'ora d'inizio!
    Poichè questi dati li "estrapolo" con stringhe SQL, non saprei come utilizzare delle List Box
    Io avrei pensato di utilizzare DataGrid ma poi come posso impedire all'utente di modificare i dati?
    E come posso fare in modo che l'utente possa selezionare solo il nome della trasmissione e non gli altri campi, e associare un pulsante al nome selezionato?
    Aiutoooooooo!!!!

  4. #4
    Secondo me potresti utilizzare una ListView con 3 colonne: la prima col titolo della trasmissione e le altre 2 con i relativi dettagli.
    Imposta su 1 - lvwManual la proprietà LabelEdit della listview

    Se vuoi un esempio:
    disegna sul form una listview e un commandbutton e nell'evento click del commandbutton scrivi:
    codice:
    Private Sub Command1_Click()
    
    'specifico il tipo di layout della listview
       ListView.View = lvwReport
    
    'aggiungo le intestazioni
       ListView.ColumnHeaders.Add Text:="Prima"
       ListView.ColumnHeaders.Add Text:="Seconda"
       ListView.ColumnHeaders.Add Text:="Terza"
    
    'aggiungo le voci in elenco
       Dim itm As ListItem
       Set itm = ListView.ListItems.Add(Text:="Uno")
           itm.ListSubItems.Add Text:="Canale 5"
           itm.ListSubItems.Add Text:="20.30"
    
       Set itm = ListView.ListItems.Add(Text:="Due")
           itm.ListSubItems.Add Text:="Italia 1"
           itm.ListSubItems.Add Text:="00.30"
    
       Set itm = ListView.ListItems.Add(Text:="Tre")
           itm.ListSubItems.Add Text:="RAI 1"
           itm.ListSubItems.Add Text:="13.00"
    
    End Sub

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    38

    listView con dati già inseriti

    grazie Lady Blu, sei molto gentile!
    Non vorrei abusare ma mi chiedevo se si può utilizzare la ListView anche per mostrare dati già inseriti in un database tramite la query:

    Rs.Open "Select OraInizio, NomeTrasmissione, Canale from epg"

    il database è epg.mdb.

    Nell'esempio sopra i dati vengono inseriti manualmente e il primo campo visualizzato è: NomeTrasmissione (Prima).
    Io invece vorrei:
    - i campi nell'ordine OraInizio(Terza), NomeTrasmissione(Prima), Canale (Terza);
    - mostrare i record tramite i risultati dell'SQL
    - associare un evento quando l'utente seleziona il nome di un programma televisivo

  6. #6
    Certo che è possibile. Una volta caricato il recordset, ti basta ciclarlo e scrivere nella listview.
    Dai un'occhiata a questo 3D:http://forum.html.it/forum/showthrea...hreadid=525794


    Per quanto riguarda l'evento da gestire, quando l'utente seleziona il nome di un programma, devi utilizzare l'evento ItemClick.


    Tieni presente questo: se la prima colonna che inserisci nella listview NON è il nome della trasmissione ti conviene impostare la proprietà FullRowSelect su True in modo da selezionare l'intera riga; infatti se lasci il valore di default la listview seleziona solo l'elemento della prima colonna, che nel tuo caso non è il titolo.

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    38
    Perdonami avevo sbagliato... anzichè scrivere sul mio topic ho scritto su quello di speriamo bene!
    Ripeto il mio problema

    aiuto
    Ho provato ad adattare il mio codice con gli esempi del link che mi hai indicato ma, a strKey = CStr(fld(0).Value), mi da il seguente errore:
    "Object Variable or With block variable not set"

    [code]
    Private Sub Command1_Click()

    Dim itm As ListItem
    Dim sItm As ListSubItem
    Dim fld As ADODB.Field
    Dim strKey As String

    'specifica il tipo di layout della listview
    ListView.View = lvwReport

    Call connetti

    'aggiunge i nomi delle colonne
    ListView.ColumnHeaders.Add Text:="Ora Inizio"
    ListView.ColumnHeaders.Add Text:="Nome Trasmissione"
    ListView.ColumnHeaders.Add Text:="Canale"


    Rs.Open "Select OraInizio, NomeTrasmissione, Canale from epg ORDER BY Gradito"
    'aggiunge le voci in elenco

    Do While Not Rs.EOF

    strKey = CStr(fld(0).Value)
    strKey = "K" & strKey

    Set itm = ListView.ListItems.Add(Key:=strKey, Text:="fld(1).Value") 'riempie la listbox coi nomi
    Set sItm = itm.ListSubItems.Add(Key:=strKey, Text:="fld(1).Value")
    Set sItm = itm.ListSubItems.Add(Key:=strKey, Text:="fld(1).Value")

    Rs.MoveNext
    Loop

    Rs.Close

    [\code]

    AIUTO!!!
    LADY BLU...PENSACI TU!!!!

  8. #8
    Per prima cosa, non è necessario utilizzare una variabile d'appoggio di tipo Adodb.Field per leggere il recordset; infatti all'interno del ciclo di Do ti basta leggere il recordset stesso.
    E poi, quando assegni alla proprietà Text della listview il valore del campo del recordset, non devi utilizzare i doppi apici.
    Ti consiglio di fare sempre un MoveFirst sul recordset dopo che lo hai aperto.

    Quindi il tuo codice corretto è questo:
    codice:
    Private Sub Command1_Click() 
    
    Dim itm As ListItem 
    Dim sItm As ListSubItem 
    
    Dim strKey As String 
    
    'specifica il tipo di layout della listview 
    ListView.View = lvwReport 
    
    Call connetti 
    
    'aggiunge i nomi delle colonne 
    ListView.ColumnHeaders.Add Text:="Ora Inizio" 
    ListView.ColumnHeaders.Add Text:="Nome Trasmissione" 
    ListView.ColumnHeaders.Add Text:="Canale" 
    
    
    Rs.Open "Select OraInizio, NomeTrasmissione, Canale _
             from epg ORDER BY Gradito" 
    
    Rs.MoveFirst
    
    'aggiunge le voci in elenco 
    
    Do While Not Rs.EOF 
    
      strKey = CStr(Rs(0).Value) 
      strKey = "K" & strKey 
      
      'riempie la listbox coi nomi 
      Set itm = ListView.ListItems.Add(Key:=strKey, Text:=Rs(1).Value) 
      Set sItm = itm.ListSubItems.Add(Key:=strKey, Text:=Rs(1).Value) 
      Set sItm = itm.ListSubItems.Add(Key:=strKey, Text:=Rs(1).Value) 
    
      Rs.MoveNext 
    Loop 
    
    Rs.Close
    PS: per chiudere i tag devi usare lo slash / non il backslash \

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    38

    non funziona ancora!

    Ti ringrazio, mi stai dando una mano per la mia tesi e in rete è difficile trovare esempi chiari per le Listview!

    Purtroppo mi da questo messaggio di errore: "Key is not unique in collection" indicandomi al debug
    Set sItm = itm.ListSubItems.Add(Key:=strKey, Text:=Rs(1).Value)
    Set sItm = itm.ListSubItems.Add(Key:=strKey, Text:=Rs(1).Value)
    Forse devo modificare qualcosa nel database?

    Ci sono altre due cose che non saprei proprio fare:
    1) vorrei che per default fosse selezionata la prima riga
    2) quando una riga è selezionata, al click di un pulsante esterno alla listview vorrei mostrare un messaggio di output, per esempio un Msgbox che ha come stringa il nome della trasmissione.

    Ancora mille grazie!

  10. #10

    Re: non funziona ancora!

    Originariamente inviato da giandelv
    Ti ringrazio, mi stai dando una mano per la mia tesi e in rete è difficile trovare esempi chiari per le Listview!

    Purtroppo mi da questo messaggio di errore: "Key is not unique in collection" indicandomi al debug
    Set sItm = itm.ListSubItems.Add(Key:=strKey, Text:=Rs(1).Value)
    Set sItm = itm.ListSubItems.Add(Key:=strKey, Text:=Rs(1).Value)
    Forse devo modificare qualcosa nel database?
    No, il db è ok; solo che devo essermi distratta e non mi sono accorta della chiave duplicata. In pratica due Item o due SubItems non accettano di avere come Key lo stesso valore.
    E' sufficiente assegnare la chiave solo all'Item, che è poi il "genitore" di tutti i SubItems a lui legati.
    codice:
    Do While Not Rs.EOF 
    
      strKey = CStr(Rs(0).Value) 
      strKey = "K" & strKey 
      
      'riempie la listbox coi nomi 
      Set itm = ListView.ListItems.Add(Key:=strKey, Text:=Rs(1).Value) 
      Set sItm = itm.ListSubItems.Add(Text:=Rs(1).Value) 
      Set sItm = itm.ListSubItems.Add(Text:=Rs(1).Value) 
    
      Rs.MoveNext 
    Loop
    Ci sono altre due cose che non saprei proprio fare:
    1) vorrei che per default fosse selezionata la prima riga
    Anche se non la vedi selezionata la listview per default legge la prima. Cmq se invece vuoi vedere la riga evidenziata devi dare il focus alla listview, dovrebbe essere sufficiente.
    2) quando una riga è selezionata, al click di un pulsante esterno alla listview vorrei mostrare un messaggio di output, per esempio un Msgbox che ha come stringa il nome della trasmissione.

    Ancora mille grazie!
    Devi leggere l'item selezionato e lanciare il messaggio. Esiste l'evento Item_Click, usa quello.


    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.