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

Résolu
cs_spoty Messages postés 17 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 11 septembre 2008 - 1 sept. 2008 à 20:16
cs_spoty Messages postés 17 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 11 septembre 2008 - 2 sept. 2008 à 17:18
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

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
1 sept. 2008 à 21:02
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
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 sept. 2008 à 21:47
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  
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
2 sept. 2008 à 02:03
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  
3
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
2 sept. 2008 à 13:59
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 !
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 sept. 2008 à 20:55
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  
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 sept. 2008 à 21:24
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  
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
1 sept. 2008 à 21:30
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
0
gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
1 sept. 2008 à 22:26
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 !
0
cs_spoty Messages postés 17 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 11 septembre 2008
2 sept. 2008 à 00:46
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+
0
cs_spoty Messages postés 17 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 11 septembre 2008
2 sept. 2008 à 13:52
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+
0
cs_spoty Messages postés 17 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 11 septembre 2008
2 sept. 2008 à 17:18
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+
0
Rejoignez-nous