Soigenr la presentation en VB console

Shenzhy Messages postés 5 Date d'inscription mercredi 18 avril 2007 Statut Membre Dernière intervention 19 mai 2010 - 21 déc. 2008 à 21:05
sturtrid Messages postés 133 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 13 juillet 2012 - 23 déc. 2008 à 04:23
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

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
21 déc. 2008 à 22:18
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
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 36
21 déc. 2008 à 22:28
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
sturtrid Messages postés 133 Date d'inscription dimanche 20 mai 2007 Statut Membre Dernière intervention 13 juillet 2012 1
23 déc. 2008 à 04:23
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...
++
Rejoignez-nous