Soigenr la presentation en VB console

Signaler
Messages postés
5
Date d'inscription
mercredi 18 avril 2007
Statut
Membre
Dernière intervention
19 mai 2010
-
Messages postés
133
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
13 juillet 2012
-
Salut a tous les développeurs et surtout aux programmeurs Visual Basic.


La presentation d'un programme en mode console est le plus souvent très
monotones. En effet, c'est pas aussi facile qu'en mode graphique ou il
y a des milliards de possibilités en matière d'amélioration du cote
esthétique d'un programme...


En mode console, tout est tellement sinistre
... Je sais qu'il y a des moyens de rendre une meilleure qualité de
travail. Malheureusement dans les tutoriels sur le Visual Basic on
apprend pas les trucs permettant de faire du beau travail.


C'est pourquoi je m'adresse a vous autres. J'aimerais par exemple
savoir comment je pourrais améliorer l'affichage d'un tableau... En
effet, si on veut afficher des informations en colonnes, la dimension
des colonnes dépendra de la taille du mot qui sera affiché. Si on
connait a l'avance les mots qu'on affichera dans les colonnes, on peut
s'arranger en.... trichant : en inserant des espaces. Mais, ce sera complement different si on ne sait pas encore quelles informations seront entrees....

Par exemple un programme qui demande des informations sur l'utilisateur et affiche le liste des utilisateurs avec info...


Ex:

Tiens le site ne permet pas d'inserer plus d'un espace... j'insere des tirets a la place


Voila ce qui arriverait si je mettais 10 espaces entre chaque colonnes (10 tirets dans cet exemple)...

Avec un code du genre :


console.out.writeline("Nom----------Prenom----------Age")

for i=0 to n

console.out.writeline(utilisateur.getNom &"----------"&
utilisateur.getPrenom & "----------" & utilisateur.getAge &
"ans")
'utilisateur etant un objet d'une classe utilisateurs

on obtient:

Nom----------Prenom----------Age

Zozor----------Luc----------15 ans

Zidane----------Zinedine----------34 ans

Chirac----------Jacques----------90 ans

Moi----------Meme----------22ans

Jacques-Jean----------Aimar-----------30 ans

Anticonstitutionellement---------- Pierre Robert Richard Jean Baptiste Poquelin-----------200ans


Comme vous pouvez le constater on nage en plein delire des qu'il y a une information trop longue le tableau va deborder, et ce n'est pas ce qu'on aurait souhaite, n'est-ce pas.... . C'est vrai,j'ai un peu exagere. Mais bon j'aimerais savoir s'il n'y a pas moyen d'eviter de pareils désagréments ....


J'aimerais savoir egalement s'il n'y a pas moyen de modifier la police et la couleur...

Finalement si vous connaissez d'autres astuces pouvant permettre d'ameliorer la presentation, n'hesitez pas


<hr />Rwendy

3 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
40
Effectivement, en mode console tu es très limité, et tu ne peux pas à ma connaissance, définir ni la taille, ni la police, ni la couleur du texte.

Par contre, tu as raison, c'est bien avec les espaces qu'il faut jouer, mais dans ton cas, ce n'est pas 10 espaces qu'il fat rajouter, mais (10- longueur du mot) et penser aussi à tronquer les mots qui font plus de 10 caractères.

D'un autre coté, le mode console n'est pas fait non plus pour afficher quantités d'informations non plus.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
33
Salut

Pour vb6,
http://www.vbfrance.com/codes/VOTRE-PROG-VB-DANS-BELLE-CONSOLE-CLASSIQUE-TRES_23012.aspx

Pour dotnet
Tu as la console console qui te donneras plein de methodes sans les API
http://msdn.microsoft.com/fr-fr/library/system.console.foregroundcolor.aspx
par exemple

Et pour la longeur des champs tu peux utilisé
des padding en dotnet qui complete par des espaces a gauche ou a droite
ou des subtring pour limiter les tailles des champs.

Apres pour voir une applications concrete qui peut meme etre hebergeur dans un programme (il me semble)
tu peux faire un tour du coté de powershell pour voir comme c'est mis en place.

Tu aurais pu preciser le type de langage.

NB : le post a été déplacé du BAR.

Bon coding
Messages postés
133
Date d'inscription
dimanche 20 mai 2007
Statut
Membre
Dernière intervention
13 juillet 2012
1
Salut Shen !

Vivi... Je suis bien d'accord avec tout le monde ici, en console c'est triste et pas si simple... Surtout si tu es habitué aux appli windows !
Mais bonne nouvelle, y'a quand même des p'tites astuces pour rendre l'écran moins monotone!
 
'Premier coup de baguette magique et hop on ajoute un titre à la fenêtre.

'Ca peux faire plus intimiste avec le programme...
Console.Title =  "Le titre de ma jolie console"

'Puis on peut donner des dimensions agréables ET pratiques...
Console.BufferHeight  =  300
Console.BufferWidth  = 90
Console.WindowWidth =   90
Console.WindowHeight  = 42

'On ajoute un peu de couleur dans ce monde binaire... Fond et texte !
Console.BackgroundColor= ConsoleColor.DarkBlue
Console.ForegroundColor= ConsoleColor.Yellow
'Une raz du buffer peut être utile pour que les nouvelles couleurs soient bien prises en compte !
'(peut dépendre de comment est appelé ton prog...)
Console.Clear()

'Et cerise sur le gâteau on peut ajouter une petite barre d'avancement quand le traitement doit être suivi!
'Colle ce code dans un nouveau projet et compile pour tester...
Sub Main()

           'Colle ici tout le code ci-dessus...
    Console.WriteLine(_
    "Ma jolie console pleine de couleurs est arrivée !" _

    & vbCrLf & "Fait un bisou sur la touche Enter pour continuer...")
    Console.ReadLine()
    Console.WriteLine(vbCrLf & vbCrLf & vbCrLf & vbCrLf & _
    "                       Shen's SuperBar is coming soon...")
    Console.BackgroundColor  = ConsoleColor.Cyan
    Console.SetCursorPosition(20, 10)
    For i  = 0 To 37
        Console.Write(" ") :  Threading.Thread.Sleep(30)
    Next
    Console.ReadLine()

End Sub

Vala, cela me semble être un bon point de départ pour obtenir une ineterface plus conviviale et vivante...

Bonne continuation et bonne prog...
++