RichTextBox et sélection de ligne

Signaler
Messages postés
45
Date d'inscription
dimanche 6 novembre 2005
Statut
Membre
Dernière intervention
2 août 2018
-
Messages postés
45
Date d'inscription
dimanche 6 novembre 2005
Statut
Membre
Dernière intervention
2 août 2018
-
Bonjour, j'écris un programme de simulation pour micro et j'utilise une zone RichTextBox pour
afficher le programme à simuler.
Une RichTextBox plutot qu'une TextBox car la taille du fichier dépasse les 64K.
J'ai besoin de surligner ou de sélectionner dans ma "RTB" la ligne en cours d'exécution.
Avec la sourie il est possible de sélectionner une ligne entière. Ce n'est pas très pratique à utiliser pour suivre le déroulement du programme en cours de simulation.
Dans VB lorsque l'on DEBUG un programme en mode Pas à Pas la ligne en cours d'éxecution est surlignée en jaune. C'est exactement ce que je cherche à faire dans mon programme.
Quelqu'un aurait-il une idée pour réaliser ce que je désire faire?
Merci de votre aide.

9 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
il faut que tu utilise les propriétés SelStart et SelLen de la RTB pour sélectionner le texte et SelBackColor je crois bien pour changer la couleur de fond

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
Messages postés
492
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
2 juillet 2012
1
bonjour casy


Les fonctions sont correctes, j'ai retourné le contrôle RTB dans tous les sens, le problème c'est que je n'ai pas trouver le moyen de définir les débuts et fins de ligne, sauf avec un CR en bout de chaques lignes, mais dans le RTB le passage a la ligne se fait automatiquement en fonction de la largeur du contrôle.
Si tu a une solution, ça pourrait aider astvt, mais je suis preneur aussi.


A+ 


louis
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Debut et fin de ligne ?????

Le debut de ligne est soit le premier caractère, soit le cacractère suivant le couple CR/LF

La fin de ligne est soit le caractère précédent le CR/LF suivant soit le dernier caractère.

Il suffit donc de faire une recherche de la position des couples de caractères CR/LF pour en déduire la position des lignes ainsi encadrées.

En VB2005, il existe aussi la propriété Lines, mais peut-etre qu'elle marche effectivement avec les lignes physiques de la RTB et pas avec lignes "textuelles" comme tu le fais remarquer Louis. Perso j'ai pas essayer.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
Messages postés
45
Date d'inscription
dimanche 6 novembre 2005
Statut
Membre
Dernière intervention
2 août 2018

Bonjour,
J'ai essayé vos suggestions mais je n'y arrive pas. Pouvez vous me fournir des exemples de commandes. La propriété lines ne fonctionne pas avec un RTB. Comment définissez vous le début et la fin d'une ligne dans un RTB?
Je nage complètement et je vais finir par couler. Merci pour votre aide.


 


 
Messages postés
45
Date d'inscription
dimanche 6 novembre 2005
Statut
Membre
Dernière intervention
2 août 2018

Bonjour, quelqu'un peut il me dire quel évènement est déclanché lorsque, avec la souris, je click dans la marge de la RTB en face une ligne et que celle-ci devient surlignée. Pour ce que désir faire, c'est peut être cet évènement que je dois déclencher pour sélectionner une ligne. Toutes les lignes du fichier chargé dans la RTB commencent par un nombre indiquant le numéro de la ligne. Avec un RTB.find(le numéro de la ligne), il est facile de se positionner sur celle-ci.
Maintenant pour sélectionner la totalité de la ligne je n'y arrive pas. Peut être en déclenchant l'évènement décrit plus haut, cela serait possible mais comment.
Merci de m'aider, toutes suggestions seront les bien venues.
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Si tu connais le n° de la ligne, tu n'as pas besoin de la rechercher dans le texte, tu peux peut-etre utiliser la propriété Lines() qui est un tableau des lignes logiques  (ou "Textuelles") du text contenu dans la RTB.
Attention, le tableau commence à l'index 0 pour la première ligne.

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
Messages postés
45
Date d'inscription
dimanche 6 novembre 2005
Statut
Membre
Dernière intervention
2 août 2018

Bonjour, voici un petit morceau du fichier chargé dans la RTB:
0098                         ;**********************
0099                         ;* début du programme *
0100                         ;**********************
0101 f800                     org $f800  ;début
0102 f800 86 80               lda #$80  ;charge reg A avec 80
0103 f802 1f 8b               tfr a,dp  ;transfère reg A dans
--^-- numéro de la ligne dans le fichier. Je n'arrive pas avec la propriété LINES de la RTB à sélectionner une ligne.


Merci de me donner un exemple pour sélectionner la ligne 0102 du fichier chargé dans la RTB.


Merci pour votre aide.
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Bon j'ai essayer de te faire un bout de code, j'espère que ça fonctionnera bien

Dim TextRecherche As String = "0102" 'A Definir suivant
besoin

'Supprime le retour automatique à
la ligne
'Pour qu'une ligne physique = une ligne
du fichier
RichTextBox1.WordWrap = False

'Efface le surlignage
précédent
RichTextBox1.SelectAll()
RichTextBox1.SelectionBackColor = RichTextBox1.BackColor

'Recherche le texte
Dim indexof As Integer = RichTextBox1.Find(TextRecherche,
RichTextBoxFinds.WholeWord)
If indexof >= 0 Then
        'récupère le n° de
ligne à partir du texte trouvé
        Dim idxline As Integer = RichTextBox1.GetLineFromCharIndex(indexof)
        'Sélectionne le texte de la ligne et le
colore
        RichTextBox1.SelectionStart = indexof
        RichTextBox1.SelectionLength = RichTextBox1.Lines(idxline).Length
        RichTextBox1.SelectionBackColor = Color.Yellow
End If

---- Sevyc64  (alias Casy) ---- # LE PARTAGE EST NOTRE FORCE #
Messages postés
45
Date d'inscription
dimanche 6 novembre 2005
Statut
Membre
Dernière intervention
2 août 2018

Bonjour Casy,


Je te remercie beaucoup pour ton coup de main. L'exemple que tu m'a fait marche impécable, c'est ce que je voulais faire mais je n'y arrivait pas à faire le petit bout de code:
        RichTextBox1.SelectionStart = indexof
        RichTextBox1.SelectionLength = RichTextBox1.Lines(idxline).Length
        
Je ne comprenais comment définir la ligne. Avec cela tout s'éclaire.
Merci encore pour ta précieuse aide.