(Rich)Textbox détection du mode insertion ???

Résolu
Signaler
Messages postés
17
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
11 septembre 2008
-
Messages postés
17
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
11 septembre 2008
-
Bonjour à tous
J'ai un petit problème .
Je n'arrive pas à trouver comment savoir si je suis en mode Insertion dans une (Rich)texbox.
Pour une MaskedTextbox pas de problème , Mais rien à faire pour une (Rich)texbox.
Si vous avez une solution, elle sera vraiement la bienvenue
Merci par avance
A+

11 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
heu, non. Ca serait plutot le mode Insertion./Remplacement, je pense. Avec la touche Insert.

Et effectivement je ne trouve rien qui en parle dans le MSDN à part la propriété InsertKeyMode de la MaskedTextBox.

La Textbox semble l'ignorer royalement et la RichTextBox semble la gérée automatiquement sans intervention possible.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
en effet sel... reste à 0 dans ce cas.

une once de folie : au keypress l'évènement est retourné et n'est pas altéré si la touche est pressée ailleurs (notepad par exemple)

e.keychar.tostring retourne "Insert", peut-être possible de jongler avec un static boolean alors
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
au down, pas au press* (en effet)

mais il n'est pas à ON à chaque pression, d'où le static évoqué

    Private Sub RichTextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles RichTextBox1.KeyDown
        Static bInsertDown As Boolean

        If e.KeyCode = Keys.Insert Then
            bInsertDown = Not bInsertDown
            RichTextBox1.BackColor = IIf(bInsertDown, Color.Turquoise, Color.White)
        End If
    End Sub

<!-- Coloration syntaxique vb/vba/vb.net : http://charles.racaud.free.fr/code-syntaxing/ -->Coloration syntaxique vb/vba/vb.net

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
Private





Sub

RichTextBox1_KeyDown(


ByVal

sender


As





Object

,


ByVal

e


As

System.Windows.Forms.KeyEventArgs)


Handles

RichTextBox1.KeyDown



If

e.KeyCode = Keys.Insert


Then


e.Handled =





True








End





If








End





Sub











Bonjour chez vous !
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
salut,

mode insertion? c'est à dire que l'utilisateur est en cours de saisie?

si oui : _Change, _Keyxxxxx, _Validate, etc...
sinon je ne vois pas (et on sera peut-être plusieurs à avoir un doute ^^)

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
plus clair avec ton explication casy (merci )

peut-être jouer en regardant le sellength au keydown et keypress?
ou encore avant au mouse_move, ou pareil au keypress pour les flèches directionnelles (à moins qu'elles soient dans le down sous VB.NET)

dans tous les cas si sellength>0 au keydown (ou press) c'est qu'on est en insert, non?
à tester.....
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Pas évident, parce que lorsque tu es un mode Remplacement (Overwrite), lorsque tu tappe une touche, c'est le caractère suivant le curseur qui est remplacer par celui saisi et sans qu'un quelconque caractère soit sélectionné. J'ai pas vérifier les propriétés mais logiquement je dirais que SelLenght est bien =0
C'est le même fonctionnement que sous Word lorsque tu as le petit indicateur Ovr affiché dans la barre de status, en bas.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
3275
Date d'inscription
jeudi 3 avril 2008
Statut
Membre
Dernière intervention
14 septembre 2014
4
Quand tu lances ton programme qui contient une richtextbox même si juste avant tu est en mode insert, le richtextbox n'en tiendras pas compte mais quand le richtextbox a le focus tu peux le savoir comme précisé ci dessous



Private





Sub

doc_KeyDown(


ByVal

sender


As





Object

,


ByVal

e


As

System.Windows.Forms.KeyEventArgs)


Handles

doc.KeyDown



If

e.KeyCode = Keys.Insert


Then


MsgBox(





"mode insert = on"

)



End





If








End





Sub














Bonjour chez vous !
Messages postés
17
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
11 septembre 2008

Bonsoir
Super,Que d'echanges sur ce sujet .
Merci pour vos contributions.
Je vais testé ça tout à heure , après quelques heures de pause dodo.

Bonne nuit
A+
Messages postés
17
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
11 septembre 2008

Bonjour
ça se complique !!!
Dans mon application , dans la richtextbox  les entrées clavier doivent être uniquement  en Remplacement .

Dim

PreAffRic AsBoolean = True
Dim Inser AsBoolean = True
...
PrivateSubRicTexBox_GotFocus(ByValsenderAsObject, ByValeAsSystem.EventArgs) HandlesRicTexBox.GotFocus
IfPreAffRicThen
SendKeys.SendWait("{INSERT}")
RicTexBox.BackColor = Color.Turquoise
PreAffRic= false
Inser = False
EndIf
EndSub
' pour l'instant pas de problème
Le Hic est pour intercepter la touche Inser
l'événement  RicTexBox.KeyDown se produit bien  
Mais  RicTexBox.KeyPress  ne se produit  pas en appuyant sur la touche inser ???
Donc impossible d'utiliser
e.Handled = True
C'est normal ou j'ai un bug ?

Bon code
A+
Messages postés
17
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
11 septembre 2008

Super ça Marche :

PublicClass Form1



Dim
PreAffRic
As
Boolean
= True




PrivateSub RicTexBox_GotFocus(ByVal sender AsObject, ByVal e As System.EventArgs) Handles RicTexBox.GotFocus



If PreAffRic Then


SendKeys.SendWait("{INSERT}")


RicTexBox.BackColor = Color.Turquoise


PreAffRic = False



End
If



End
Sub



Private
Sub RicTexBox_KeyDown(ByVal sender AsObject, ByVal e As System.Windows.Forms.KeyEventArgs) Handles RicTexBox.KeyDown



'controle mode insertion



If e.KeyCode Keys.Insert Then e.Handled Not PreAffRic



End
Sub
.....
Dommage  que InsertKeyMode ne soit pas disponible , ça aurait été plus simple.

Merci du coup de main
A+