Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291

    VB6- ListWiew selezionare min e max.

    In Lv ho diversi elementi che variano, il cui numero non conosco a priori. Mi occorre selezionare da una colonna l'anno minore e quello maggiore (ad esempio 2003 e 2006 in un formato data del tipo 01/02/2003); nel seguente modo seleziono un anno specifico:
    'Preleva l'anno dalla Lv:
    sDataLv = FrmLisDiff.LvDiff.ListItems(1).ListSubItems(1).Tex t
    sDataLvNW = Right(sDataLv, 4)
    come faccio per selezionare il min. ed il max.?
    LM

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    156
    dichiara due variabili:MaxData e MinData
    MaxData=""
    MinData=""
    Dichiari una variabile integer e
    crei un loop
    Maxdata=listview.listitem(1).text
    MinData=listview.listitem(1).text

    for i=2 to listview.listitem.count
    if listview.listitem(i).text>MaxData
    maxdata=listview.listitem(i).text
    end if

    if listview.listitem(i).text<MinData
    mindata=listview.listitem(i).text
    end if


    next i

    E' una possibile schema di soluzione per tirare fuori la data piu' alta e piu' bassa

  3. #3
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Grazie,
    ora provo.
    LM

  4. #4
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    C'è un'anima pia che mi verifichi questa Sub. In apparenza funziona ma ... ho qualche dubbio:
    codice:
    Public Sub DataAnno()
        
        Dim sDataLv As String
        Dim sMinAnnoy As String
        
        sMaxAnno = ""
        sMinAnno = ""
        sMinAnnoy = ""
        
        Dim a As Integer
            
        For a = 1 To FrmLisDiff.LvDiff.ListItems.Count
            sDataLv = Right(FrmLisDiff.LvDiff.ListItems(a).ListSubItems(1).Text, 4)
            
            If sDataLv > sMaxAnno Then
                sMaxAnno = sDataLv
                sMinAnnoy = sMaxAnno
            End If
            
            If sDataLv < sMinAnnoy Then
                sMinAnnoy = sDataLv
                sMinAnno = sDataLv
             End If
        Next a
    
    End Sub
    In particolare la variabile sDataLv acquisisce i valori che sono 2006,2005,2003,2004. Ora il Massimo (sMaxAnno) sembra funzionare (2006), mentre il Minimo (sMinAnno=2003) mi ha dato diversi fastidi. Non vorrei che funzionasse solo in apparenza!
    Grazie per l'aiuto.
    LM

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    156
    Dim sDataLv As String
    Dim sMinAnnoy As String
    dim sMaxAnnoy as string


    sMaxAnno = ""
    sMinAnno = ""
    sMinAnnoy = ""

    Dim a As Integer

    For a = 1 To FrmLisDiff.LvDiff.ListItems.Count

    sDataLv = Right(FrmLisDiff.LvDiff.ListItems(a).ListSubItems( 1).Text, 4)

    If sDataLv > sMaxAnno Then
    sMaxAnno = sDataLv
    sMaxAnnoy = sMaxAnno
    End If

    If sDataLv < sMinAnno Then
    sMinAnno = sDataLv
    sMinAnnoY = sDataLv
    End If
    Next a

    Prova cosi'.Ho aggiunto una variabile smaxAnnoY
    In questo modo hai in contemporanea Max e Min

  6. #6
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    multijet grazie per la risposta.
    La modifica che suggerisci non funziona, in quanto hai tolto sMinAnnoy = sMaxAnno nell'If che determina il Max (If sDataLv > sMaxAnno Then). In tal modo la variabile sMinAnnoy non viene caricata e, risultando vuota, è sempre minore di sDataLv (If sDataLv < sMinAnnoy Then), con conseguente fallimento dell'If che determina il Minimo.
    Ti ringrazio comunque dell'intervento.
    LM

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    156
    l'ho fatta cosi' su intuizione senza provarla.
    La cosa che voluvo suggerire era quella di avere due variabili Max e Min distinte.
    Provero' con Vb e ti faro' sapere.
    Ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    156
    Prova cosi',l'ho provata su Vb e a me funziona.

    Dim maxvalue As Double
    Dim minvalue As Double
    Dim Cont As Integer
    Dim Numero As Double

    maxvalue = (ListView3.ListItems(1).SubItems(2))
    minvalue = (ListView3.ListItems(1).SubItems(2))



    For Cont = 2 To ListView3.ListItems.Count - 2
    Numero = (ListView3.ListItems(Cont).SubItems(2))

    If Numero > maxvalue Then
    maxvalue = Numero
    End If
    If Numero < minvalue Then
    minvalue = Numero
    End If
    Next Cont

    MsgBox maxvalue
    MsgBox minvalue

    Nella variabile numero io ho messo il contenuto della colonna N2 della listview.Tu dovresti inserire il valore della funzione per recuperare il valore dell'anno con il numero della relativa colonna dove lo visualizzi

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2006
    Messaggi
    156
    Scusa,ho dimenticato di togliere il -2 nella stringa for cont=2 to listview3.listitem.count -2
    il -2 serviva a me per non impazzire a creare una nuova list (ne ho usata una gia popolata)

  10. #10
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Grazie multijet
    LM

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.