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

    [VB6] ProgressBar e Max

    Ciao,

    Ho un problema con la progressbar.
    Ho settato Min e Max e funziona tutto bene ma alla fine, quando value raggiunge 100 (Max), VB mi da errore. Ho provato usando degli If per disattivare il timer che aumentava di 1 il value della progress bar.

    Ecco il codice dell'intero form (è poco )

    codice:
    Public Function timer()
    ProgressBar1.Min = 0
    ProgressBar1.Max = 100
    If ProgressBar1.Value = ProgressBar1.Max Then
    Command2.Enabled = True
    ElseIf ProgressBar1.Value = ProgressBar1.Max Then
    Timer1.Enabled = False
    End If
    ProgressBar1.Value = ProgressBar1.Value + 1
    End Function
    
    Private Sub Form_Load()
    Command1.Enabled = True
    Command2.Enabled = False
    Command3.Enabled = True
    End Sub
    
    Private Sub Timer1_Timer()
    Call timer
    End Sub
    Spero possiate aiutarmi. Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Prova a scrivere

    codice:
    Private Sub Form_Load()
        ProgressBar1.Min = 0
        ProgressBar1.Max = 100
        
        Command1.Enabled = True
        Command2.Enabled = False
        Command3.Enabled = True
    End Sub
    
    Private Sub Timer1_Timer()
        If ProgressBar1.Value = ProgressBar1.Max Then
            Command2.Enabled = True
            Timer1.Enabled = False
        Else
            ProgressBar1.Value = ProgressBar1.Value + 1
        End If
    End Sub
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Funziona, Grazie

  4. #4
    codice:
    Public Function timer() 'Perchè una FUNCITON e non una SUB?
     ProgressBar1.Min = 0  'A meno che non ci siano altre funzioni che modificano questo valore, non importa risettarlo ogni volta
     ProgressBar1.Max = 100   'A meno che non ci siano altre funzioni che modificano questo valore, non importa risettarlo ogni volta
     If ProgressBar1.Value = ProgressBar1.Max Then ''Se .value = .max ==> Disattiva Command2
         Command2.Enabled = True
     ElseIf ProgressBar1.Value = ProgressBar1.Max Then  'Se .value = .max ==> Disattiva il timer (att.ne se questa condizione è vera è vera pure quella dell'if precedente quindi qua non ci arriverà mai)
        Timer1.Enabled = False
         'PUNTO A
     End If
    
     ProgressBar1.Value = ProgressBar1.Value + 1  'incrementa .value di 1 (nota: pure se è già al massimo).
    End Function
    L'errore nel codice che causava il problema è che l'incremento della ProgressBar viene effettuato anche quando il valore è già al massimo.

    O metti un "exit function" nella riga che ti ho evidenziato con PUNTO A oppure aggiungi un controllo prima di incrementare.

    Inoltre Hai messo 2 IF in cascata con la medesima espressione di controllo. Questo fa si che il timer non venga praticamente mai disattivato.

    Un esempio "tradizionale":
    codice:
    Public sub timer()
     dim cond as boolean
     if ProgressBar1.Value < ProgressBar1.Max then
      ProgressBar1.Value = ProgressBar1.Value + 1
     else
      Command2.Enabled = true
      Timer1.Enabled = false
     endif
    End Function
    Un esempio un "po' particolare":
    codice:
    Public sub timer()
     dim cond as boolean
     cond= (ProgressBar1.Value < ProgressBar1.Max)
    
     Command2.Enabled = not(cond)   'Abilita Command2 se la PB1 è al massimo, altrimenti disabilitalo.
     Timer1.Enabled = cond 'Disabilita Timer se PB1 è al massimo, abilitalo in caso contrario.
    
     If cond Then  ProgressBar1.Value = ProgressBar1.Value + 1
    End Function
    Questa procedura funziona così:
    1. Verifica la consizione in cui si trova la progressBar.
    2. Abilita/disabilita controlli/Timer a seconda della condizione
    3. Se necessario incrementa la progress bar

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 © 2026 vBulletin Solutions, Inc. All rights reserved.