Barre d'avancement dans une application console

Soyez le premier à donner votre avis sur cette source.

Vue 11 893 fois - Téléchargée 546 fois

Description

Cette source sert à montrer comment réaliser une barre d'avancement dans une application console.
Elle utilise ici les commandes System.Threading.Thread.Sleep pour avancer, mais on peut remplacer ces lignes de code par d'autres commandes, par exemple la copie d'un fichier.
Pour créer une barre, il suffit de taper CreerBarre(Texte qui va s'afficher, Couleur de la barre, Couleur du texte, Couleur de fond de la console, Intervalle).

Source / Exemple :


'Le code de l'application (Merci à ghuysmans99 !) :

Module Module1
    Private Sub Progress(ByVal SleepVar As Long)
        Dim i As Integer
        For i = 1 To 38
            Console.Write(" ")
            System.Threading.Thread.Sleep(SleepVar)
        Next i
    End Sub
    Private Sub WriteRien(ByVal NOF As Integer)
        Dim i As Integer
        For i = 1 To NOF
            Console.WriteLine("")
        Next i
    End Sub
    Private Sub CreerBarre(ByVal Texte As String, ByVal CouleurBarre As System.ConsoleColor, ByVal CouleurTexte As System.ConsoleColor, ByVal FondConsole As System.ConsoleColor, ByVal IntervalleMilliSeconds As Integer)
        Console.BackgroundColor = FondConsole
        Console.ForegroundColor = CouleurTexte
        Console.Clear()
        WriteRien(5)
        Console.SetCursorPosition((Console.WindowWidth - Len(Texte)) / 2, 5)
        Console.WriteLine(Texte)
        WriteRien(6)
        Console.WriteLine("                   |--------------------------------------|")
        Console.WriteLine("                   |                                      |")
        Console.WriteLine("                   |--------------------------------------|")
        Console.BackgroundColor = CouleurBarre
        Console.SetCursorPosition(20, 13)
        Progress(IntervalleMilliSeconds)
        Console.BackgroundColor = FondConsole
    End Sub

    Sub Main()
        Console.CursorVisible = False
        Console.Title = "Exemple de barre d'avancement en ligne de commandes"
        Console.Clear()
        CreerBarre("Exemple de barre d'avancement jaune dans une fenêtre console.", ConsoleColor.Yellow, ConsoleColor.Yellow, ConsoleColor.Blue, 200)
        System.Threading.Thread.Sleep(3000)
        Console.Clear()
        CreerBarre("Et une autre barre d'avancement, rouge cette fois.", ConsoleColor.Red, ConsoleColor.Yellow, ConsoleColor.Blue, 100)
        System.Threading.Thread.Sleep(3000)
    End Sub

End Module

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

arnaud2006
Messages postés
6
Date d'inscription
dimanche 7 octobre 2007
Statut
Membre
Dernière intervention
1 juin 2009
-
Merci
ghuysmans99
Messages postés
2501
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
1 -
oops ...

# Private Sub WriteRien(ByVal NOF As Integer)
# Dim i As Integer
# For i = 1 To NOF
# Console.WriteLine(" ")
# Next i
# End Sub
BERGOUGNOUX
Messages postés
40
Date d'inscription
mercredi 14 septembre 2005
Statut
Membre
Dernière intervention
16 mars 2008
-
Oups désolé !
ghuysmans99
Messages postés
2501
Date d'inscription
jeudi 14 juillet 2005
Statut
Contributeur
Dernière intervention
5 juin 2016
1 -
désolé .. au fait : c'est ghuysmans99 et pas GHUYSMANNS99
BERGOUGNOUX
Messages postés
40
Date d'inscription
mercredi 14 septembre 2005
Statut
Membre
Dernière intervention
16 mars 2008
-
Ca ne fonctionnera pas :

1)WriteRien utilise WriteLine et non pas Write : à chaque fois VB sautera une ligne au lieu d'écrire un espace.

2)Utiliser WriteRien 38 ajouterait tous les espaces d'un coup sans attendre d'intervalles, en supposant qu'on utilise Write et non pas WriteLine.

3)Si on utilise For i = 1 To 38, VB recommencera l'opération jusqu'à ce que la variable i valle 38, la barre progressera donc progressivement (c'est le cas de le dire !). Si on utilise ton code, VB ne le fera qu'une fois, vu qu'il n'y a pas de boucle, et on se retrouve donc au 2) : les 38 espaces seront ajoutés en même temps, la barre progressera donc d'un coup.

Voilà, j'espère que mes explications sont compréhensibles...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.