Accueil
Accueil
Le
Club
Delphi
Kylix
C
C++
Java
J2EE
DotNET
& C#
Visual
Basic
Access
Pascal
Dev
Web
PHP
ASP
XML
UML
SQL
SGBD
Win
Linux
Autres

        


Comment éteindre et/ou modifier le curseur texte ?
auteur : Hdd34
Pour modifier l'apparence du curseur texte, il faut faire appel à l'interruption 10h, fonction 01h :


uses Dos; var Regs: Registers; begin Regs.ax := $0100; { Fonction 01h } Regs.cl := $20; { Ligne de départ (0 à 31, 32 éteint) } Regs.ch := $20; { Ligne de fin (0 à 31, 32 éteint) } Intr($10, Regs); { Appel de l'interruption } end;
Pour le curseur, 32 lignes sont disponibles (de 0 à 31). Si jamais vous indiquez une valeur supérieure à 31, alors le curseur disparaît.

Les valeurs par défaut pour le curseur texte sont (cl, ch) = (6, 7) pour un adaptateur couleur et (12, 13) pour le monochrome (archaïque !).


Comment utiliser un mode texte 80x50 ?
auteur : Hdd34
Pour basculer votre application mode texte en 80x50, il faut utiliser la procédure TextMode de l'unité Crt avec l'attribut Font8x8, comme ceci :


uses Crt; begin ... { 80 colonnes, petite police } TextMode(CO80 or Font8x8); ... end.

Comment éviter que l'écran ne défile quand on écrit en bas à droite ?
auteur : Hdd34
Si on écrit tout en bas à droite de l'écran celui-ci défile automatiquement. Ce peut être très gênant si on désire simplement afficher un cadre ou une barre d'état.
Il existe deux manières de parer à ce problème.

  • Utiliser Crt
    L'unité Crt déclare plusieurs variables pour stocker la taille de l'écran : WindMin et WindMax, correspondant respectivement aux coins supérieur gauche et inférieur droit. Ce sont deux Word dont l'octet de poids faible correspond à la coordonnée en X et l'octet de poids fort à la coordonnée en Y.
    Afin de "tromper" Crt, il suffit de lui faire croire que l'écran possède une colonne de plus, en incrémentant la valeur de WindMax, comme ceci :

uses Crt; procedure WriteCorner(Ch: Char); var X, Y: Byte; begin { On sauve la position actuelle du curseur } X := WhereX; Y := WhereY; { On agrandit "virtuellement" la fenêtre } Inc(WindMax); GotoXY(Lo(WindMax) - 1, Hi(WindMax)); Write(Ch); Dec(WindMax); { On se replace à la position de départ } GotoXY(X, Y); end;
  • Ecrire directement en mémoire vidéo

    On peut si on le désire écrire directement dans la mémoire vidéo à la position souhaitée. Il convient alors de connaître non seulement l'adresse exacte, à savoir B800:0000 pour un adaptateur couleur, mais aussi la structure de données attendue. On peut ainsi déclarer les éléments suivants, pour un écran en 80x25 :

type TTextScreen = array[1..25, 1..80] of record Ch: Char; Color: Byte; end; var TextScreen: TTextScreen absolute $B800:$0000;
  • Par la suite, il suffit d'écrire directement dans la variable TextScreen pour placer un caractère sur l'écran. On a alors :

procedure WriteChar(X, Y: Byte; Ch: Char; FgColor, BkColor: Byte); begin TextScreen[Y, X].Ch := Ch; TextScreen[Y, X].Color := (BkColor shl 4) or (FgColor and 15); end;

        

Consultez les autres F.A.Q's

Les sources présentés sur cette pages sont libre de droits, et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2004  Developpez LLC. Tout droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright 2000..2005 www.developpez.com