Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [VB6] Listbox con testo scorrevole

    Premetto di essere un niubbo su VB e per questo chiedo a voi.
    Vorrei inserire un testo in una listbox che appaia lettera per lettera e che quando finisce la box vada a capo automaticamente. Ho creato una serie di liste in "List" e le ho numerate in "ItemData" da 0 a 9. Pensavo che mettendoci un timer e un if sulla listbox, mi avrebbe fatto apparire le righe dalla prima all'ultima anche se non in modo scorrevole e dinamico ma a quanto pare non funziona o sono io che sbaglio (probabile)
    Mi dite come posso rendere il testo all'interno dinamico e che si ripete all'infinito per tutte e 10 le righe?

  2. #2
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Non è che si sia capito molto di quello che vuoi fare...

    Puoi rispiegarlo meglio, magari postando il codice che hai già scritto?

    Boolean

  3. #3
    Scusa.^^"
    Dunque: io vorrei mettere in una Listbox, una serie di 0 e 1 diciamo casuali che compaiano numero per numero (prima 0 poi 1 e così di seguito).
    Per farlo ho inserito nella ListBox varie righe nella proprietà List e le ho numerate nella proprietà ItemData, numerandole da 0 a 9: un valore per ogni riga.
    Io ho provato con questo semplice codice perchè pensavo che bastasse.

    codice:
    Private Sub List1_Click()
    If Timer1 = "10" Then 
    List1.ItemData = "1" 
    End If 
    End Sub
    Pensavo che così facendo, ogni 10 ms mi apparisse la riga identificata dal valore 1 anche se così sarebbe apparsa una riga alla volta e non come volevo io, un numero per volta.

  4. #4
    Up?

  5. #5
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Per fare quello che chiedi è necessario l'utilizzo di un Timer.

    Il Timer espone un evento (che si chiama Timer anch'esso) che viene rilasciato ad ogni scadenza del tempo impostato nella proprietà Interval del Timer.
    In questo evento ti dovrai occupare di generare la riga e di mostrarla un carattrere alla volta nella ListBox.

    Tra un carattere e l'altro potresti usare un ciclo di ritardo o, ancora meglio, la api Sleep.

    In linea di massima:

    codice:
    Private Sub TuoTimer_Timer()
    
        ' Genero la stringa da mostrare
        ' [Generazione della stringa]
    
        'Aggiungo la riga alla ListBox
        TuaListBox.AddItem ""
    
        'Creo un ciclo per aggiungere un carattere alla volta
        For i = 1 To Len(s)
    
            'Scrivo la stringa un carattere alla volta sull'Item appena aggiunto
            TuaListBox.List(TuaListBox.NewIndex) = Mid(s, 1, i)
    
            'Aspetto 100 ms
            Sleep 100
    
            DoEvents
        Next
    
    End Sub
    La dichiarazione della Sleep, è questa:

    codice:
    Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
    Il codice serve solo da esempio, l'ho scritto direttamente qui, per cui controllalo bene e studiane il funzionamento.

    Boolean

  6. #6
    Grazie. Ho provato e funziona tutto, ma non ho capito la stringa
    codice:
    TuaListBox.List(TuaListBox.NewIndex) = Mid(s, 1, i)
    Più precisamente
    codice:
    Mid(s, 1, i)
    Io dovrei ripetere quella stringa tante volte quante volte sono quei valori? O dovrei modificare quel che c'è dentro la parentesi?
    E, una domanda tanto per chiarirci. Il codice scritto gli dice di andare a vedere l'oggetto X e da lì ripete all'infinito tutto ciò che c'è da quella riga in poi?
    Grazie.^^

  7. #7
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Scusami, ma perchè non vai a vedere sulla Guida in Linea in cosa consiste la funzione Mid?

    Boolean

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Shikamaru93
    non ho capito ...

    codice:
    Mid(s, 1, i)
    Funzione Mid
    http://msdn.microsoft.com/en-us/library/aa445073(v=VS.60).aspx
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.