Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    117

    [VB6] Aggiungere in una Listview una barra di riempimento.

    Salve a tutti,
    e' possibile aggiungere in una listview una barra di riempimento?

    Mi spiego meglio...facciamo finta che io devo caricare dei dati in una listview, a mano a mano che le voci compaiono su ogni riga della lista, nell'ultima riga si veda una barra di riempimento che indichi quanti altre voci devono essere caricate:

    % nome cognome via citta' nazione
    ---------------------------------------------------------
    |

    % nome cognome via citta' nazione
    ---------------------------------------------------------
    | michele

    % nome cognome via citta' nazione
    ---------------------------------------------------------
    || michele lombardi

    % nome cognome via citta' nazione
    ---------------------------------------------------------
    ||| michele lombardi via treno 32

    % nome cognome via citta' nazione
    ---------------------------------------------------------
    |||| michele lombardi via treno 32 trieste

    % nome cognome via citta' nazione
    ---------------------------------------------------------
    ||||| michele lombardi via treno 32 trieste italia

    Gli | rappresenta la barra che si riempie ossia + | ci sono e piu' la barra è riempita.

    questo ovviamente per ogni riga, io in questo esempio ho visualizzato solo una riga come si riempie nello scandire nei secondi.

    Grazie in anticipo della risposta.

  2. #2
    Praticamente ci deve essere solo 1 riga da ultimo? Con la listview non puoi farlo, ma ti consiglio di provare con una progressbar, mettendo come valori max e min i numeri max e min di voci..cosa ne pensi?

    Ma l'altra soluzione come è andata?

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    117
    Ciao MDE,
    lascia perdere il mio vecchio post, io volevo intendere la barra di riempimento e non la barra di scorrimento, ho fatto un po' di confusione, cmq la mia domanda e'...
    ....e' possibile inserire all'interno di una Listview una progressbar?

    Io immagino che non si possa fare anche se su molti prg vedo che ci sono progressbar in delle liste (ad esempio su emule o su winmx o su loopster che indica la % di file scaricato).
    Ora non so se la questione e' dovuta dal fatto che quei prg non sono realizzati con il VB6 ma cmq l'idea di porre una progressbar sopra la listview e' un pò.."incasinata"; dico questo perche' nel momento che nella listview appare la barra di scorrimento ed io la adopero per visualizzare l'intera lista, sono costretto a modificare la posizione della progressbar quando le varie rige si spostano in alto o in basso.

    Mi affido a voi per qualche idea alternativa.

  4. #4
    Ciao..stai parlando di caricamento: non puoi apprezzare il caricamento in quanto per ogni le voci "appaiono" quasi nello stesso istante (teoricamente NO, ma visto l'intervallo così infinitesimo tra i due caricamenti SI---> a livello pratico non si può vedere questo intervallo di tempo).
    A meno che tu non voglia fare il caricamento voce per voce in seguito alla pressione di un tasto, per esempio: in quel caso avrebbe senso.
    Inoltre: che tipo di visualizzazione hai impostato? Icon,SmallIcon, List, Report?

    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    117
    Ciao,
    in verita' le Progressbar mi serve per visualizzare le percentuali di file scaricati e fatti scaricare, come i download e gli upload di Winmx.

    Del resto nella la listview non ho inserito ne Icon, ne SmallIcon e non so cosa sia la List o il Report.

    Cmq hai ricevuto la mia email?

  6. #6
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    ho fatto una prova... effettivamente con un piccolo artificio si riesce a fare quello che vuoi.

    ma non con la progressbar standard, ovvero quella dei CommonControls. devi creartela da solo.

    ho preparato un piccolo esempio, e se ti va di provarlo, metti in un form nuovo:

    - 1 PictureBox
    - 1 ListView
    - 1 Imagelist
    - 1 Timer

    lascia tutti i nomi di default.

    dopo di che nel codice del form metti queste righe:

    codice:
    Public NumeroFiles As Integer
    
    Private Sub Form_Load()
    
    Randomize
    
    NumeroFiles = 50
    
    Dim itmx As ListItem
    Dim K As Integer
    
    Timer1.Interval = 500
    Timer1.Enabled = True
    Picture1.AutoRedraw = True
    Picture1.Visible = False
    
    ImageList1.ListImages.Add , , Picture1.Image
    ListView1.View = lvwReport
    ListView1.HideSelection = False
    ListView1.FullRowSelect = True
    ListView1.ColumnHeaders.Add , , "ID", 0
    ListView1.ColumnHeaders.Add , , "Nome File", Picture1.ScaleWidth * 2
    ListView1.ColumnHeaders.Add , , "Scaricato", Picture1.ScaleWidth
    
    For K = 1 To NumeroFiles
        Set itmx = ListView1.ListItems.Add(, , K)
        itmx.SubItems(1) = "File N. " & K
        itmx.SubItems(2) = " "
    Next
    
    End Sub
    
    Private Sub Timer1_Timer()
    
    Dim Completi As Integer
    Dim ValPrec As String
    Dim Stp As Integer
    Dim BarW As Integer
    Dim X As Integer
    Dim K As Integer
    
    Set ListView1.SmallIcons = Nothing
    ImageList1.ListImages.Clear
    
    For K = 1 To NumeroFiles
        Stp = 1 + Int(Rnd * 5)
        ValPrec = ListView1.ListItems(K).Tag
        If Val(ValPrec) < 100 Then
            BarW = Val(ValPrec) + Stp
            ListView1.ListItems(K).Tag = BarW
            X = (Picture1.ScaleWidth * BarW) / 100
            Picture1.Cls
            Picture1.BackColor = RGB(200, 200, 200)
            Picture1.Line (0, 0)-(X, Picture1.ScaleHeight), vbRed, BF
            ImageList1.ListImages.Add , , Picture1.Image
        Else
            Picture1.BackColor = vbGreen
            ImageList1.ListImages.Add , , Picture1.Image
            ListView1.ListItems(K).Tag = 100
        End If
        DoEvents
    Next
        
        Set ListView1.SmallIcons = ImageList1
    
        Completi = 0
    For K = 1 To NumeroFiles
        ListView1.ListItems(K).ListSubItems(2).ReportIcon = K
        Completi = Completi + IIf(ListView1.ListItems(K).Tag = 100, 1, 0)
        If Completi = NumeroFiles Then
            Timer1.Enabled = False
            MsgBox "Downloads completati!"
        End If
        DoEvents
    Next
    
    End Sub
    ovviamente l'avanzamento delle barre si basa su dei valori casuali... ma penso che con qualche aggiustamento possa riuscire ad adattarlo alle tue esigenze...
    volendo, potresti anche rendere piu "raffinata" la ProgressBar aggiungendo la percentuale di avanzamento, etc...

    Boolean

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    117
    Grazie infinite Boolean lo provo e ti faccio sapere

  8. #8
    Ciao Boolean..ti confesso che a questo tipo di soluzione non avevo pensato ma comunque ti volevo fare i complimenti per questo codice, è veramente interessante.

    Ciao

  9. #9
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Grazie MdE!

    in effetti è piuttosto grezzo... e per adattarlo agli scopi del nostro amico c'è da lavorare...

    in effetti, però, non è male come base di partenza... e penso che come "tecnica" sia quella che graficamente renda meglio.

    anche dal punto di vista della gestione separata di ogni singolo file

    Boolean

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    117
    Si confermo e' veramente utile per non dire che e' na figata ehehe..
    devo solo cercare di adattarlo nel mio prg cercando alla meglio di creare una barra piu' bella con la % all'interno.
    Cmq ora sono impegnato a farli funzionare i download e gli upload perche' certe volte partono e altre volte no uindi mi ci vorra' un po' di tempo prima che metta mani al codice di Boolean.
    Cmq lo ringrazio e spero al piu' presto di porre qui il codice di boolean con una barra piu' bella.

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.