Problem avec Textbox.

Résolu
Beuzzette Messages postés 25 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 20 juin 2007 - 19 déc. 2005 à 00:43
Beuzzette Messages postés 25 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 20 juin 2007 - 20 déc. 2005 à 19:24
Bonjour !

J'ai un problem avec mon Textbox dans le chat que j'ai cree avec un ami jesper que vous pourez m'aidez.

Voila j'explique le probleme :

Je demare de Chat nikel , j'envoie mon messeage , (c'est là que sa se gate) mon textbox se mais a sauter une ligne .

Pourquoi mon textbox saute une ligne alors que j'ai rien demandé ????

Merci d'avance

43 réponses

Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
19 déc. 2005 à 15:56
il s'agit de détecter la touche Shift dans KeyPress,

ton code pourra se placer dans KeyPress,

et là KeyAscii = 0 sera effectif.





Dim Bool As Boolean



Private Sub Txtmessage_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode 16 Then Bool True

End Sub



Private Sub Txtmessage_KeyPress(KeyAscii As Integer)

If Not Bool And KeyAscii = 13 Then

KeyAscii = 0

Cmdsend_Click

Txtmessage = ""

End If

End Sub



Private Sub Txtmessage_KeyUp(KeyCode As Integer, Shift As Integer)

If KeyCode 16 Then Bool False

End Sub


Daniel
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 déc. 2005 à 16:17
parce que ReyTxtBox est un composant personnel de RenField et que la
simple RichTextBox (qui elle par ailleurs, n'est pas libre de droits
pour sa redistribution) ne gère pas le ForeColor.

pour un débutant, il n'y a pas grand chose à faire. utilise un autre composant....

faut pas griller les étapes ;)
3
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
20 déc. 2005 à 17:57
bon, je te fais un exemple :

j'espère que çà répondra....






' -----

' Form1

' -----

'

Option Explicit

'

'

Private Sub Form_Load()

Cbo_State.AddItem "On Line"

Cbo_State.AddItem "Hidden"

Cbo_State.AddItem "Away"

Cbo_State.AddItem "Visitor"

'

Cbo_State.ListIndex = 0

'

Txt_Pseudo.Text = "Beuzzette"

End Sub

'

'

Private Sub Cmd_Connection_Click()

Form2.Show

End Sub











' -----

' Form2

' -----

'

Option Explicit

'

'

Private Sub Form_Load()

StatusBar.Panels(1).Width = 2000

StatusBar.Panels(1).Text = Form1.Txt_Pseudo.Text & _

" (" & Form1.Cbo_State.Text & ")"

Unload Form1

End Sub




<small> Coloration
syntaxique automatique [AFCK]</small>



PCPT [AFCK]
3
Beuzzette Messages postés 25 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 20 juin 2007
19 déc. 2005 à 00:45
Désole d'avoir écris gros ....

J'alais oublier aussi mon ami et moi nous avons mis une commande pour envoyer le texte en apuyant sur entree.

Est-ce que ça a un rapport ??
0

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

Posez votre question
dxh_master Messages postés 97 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 25 juin 2006
19 déc. 2005 à 01:08
oui je croit c'est quoi le code ???
0
Beuzzette Messages postés 25 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 20 juin 2007
19 déc. 2005 à 01:13
Je te remercie d'avoir repondu aussi vite !!

Private Sub Txtmessage_KeyDown(KeyCode As Integer, Shift As Integer)
If Not Shift And KeyCode = 13 Then

Cmdsend_Click
KeyCode = 0
txtmessage = ""
End If
End Sub

Voila jesper que tu va pouvoir m'aider ...

Merci d'avance
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
19 déc. 2005 à 02:35
Essai déjà comme ça :

Private Sub Txtmessage_KeyDown(KeyCode As Integer, Shift As Integer)
If Not Shift And KeyCode = vbNewLine Then
Cmdsend_Click
txtmessage = ""

KeyCode = 0
End If
End Sub

D'un parce que les constantes VB c'est bien pratique, plus propre et plus fiable à lon terme que les valeurs elles-mêmes (13). Mais bon, si ça ne fonctionne plus, remet ton 13 mais ça m'étonnerais fort!
Je crois qu'il est préférable de mettre txtmessage="" avant le fameux KeyCode=0

Mais ton problème bient peut-être de plus haut! Ton code me paraît correcte même si je ne l'ai pas testé. Mais il y a souvent des problèmes de récursivité qui peuvent parfaitement provoquer ce genre de trucs.

Tu peux les bloquer en créant une variable globale... :

Dim varAntiRecursif As Boolean
...
Sub machin(...)
If varAntiRecursif = True Then Exit Sub
varAntiRecursif = True
... If bidule truc Then varAntiRecursif False : Exit Sub
...
varAntiRecursif = False
End Sub

Fait ça dans toutes tes procédures et en particulier dans Cmdsend_Click !!!

Le problème vient sans doute lors du chargement où, justement, étant donné que les contrôles s'initialisent et peuvent donc interagire entre eux lors de cette phase, il arrive fréquement des trucs qu'on n'attendait pas.

Sinon, j'ai du mal à voir d'où peut venir ton prob si ce n'est dans Cmdsend_Click !

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
19 déc. 2005 à 03:45
>> désolé ScSami





KeyCode = vbNewLine



KeyCode ne sera jamais égal à vbNewLine

KeyCode est un intéger et vbNewLine une chaîne sur 2 caractères



KeyCode = 0



est sans effet, il faut mettre le code dans KeyPress:



Private Sub Text1_KeyPress(KeyAscii As Integer)

KeyAscii = 0

End Sub



par contre txtmessage = "" devrait marcher

ça supprime le texte et les sauts de lignes aussi,

il doit se passer quelque chose après, lié au fait que la touche n'est pas effacée.



Daniel
0
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
19 déc. 2005 à 03:58
Oui, en effet, autant pour moi... désolé!

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
19 déc. 2005 à 04:07
ummm... salut,



si Enter sans Shift, alors ... appel bouton_Click

ouai, mais enter a été tapé.



Cmdsend_Click
KeyCode = 0
txtmessage = ""






peut-être enlever le Enter avant nan?

et comme tu as (ici) copier/coller ton code, pourquoi ton évènement
contient-il une majuscule et pas ton contrôle.... une variable du même
nom??



KeyCode = 0


Cmdsend_Click
Txtmessage.Text = ""






et logiquement, ta zone de texte devrait être vidée dans la Sub Click....



et pour finir, et c'est aussi de là ou vient le problème, t'as beau annuler le enter (KeyCode =0), ce n'est pas çà qui dé-enfonce la touche...

autrement dit : ton code doit être dans l'évènement Txtmessage_KeyUp



@+

PCPT [AFCK]
0
Beuzzette Messages postés 25 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 20 juin 2007
19 déc. 2005 à 12:12
Je vous remercie les gars d'avoir repondu aussi vite je vais tester tout de suite.
0
Beuzzette Messages postés 25 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 20 juin 2007
19 déc. 2005 à 12:29
Non , le code de Tcpt ton code ne marche pas maintenant ej vais tester les codes de Gobillot
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
19 déc. 2005 à 12:36
n'oublie pas de mettre le test.

est-ce que tu as autre chose dans Txtmessage_
KeyPress

ou dans Txtmessage_
KeyUp,

un truc qui rajoute un vbCrLf dans Txtmessage ?





Private Sub Txtmessage
_KeyPress(KeyAscii As Integer)

If KeyAscii = vbKeyReturn Then

KeyAscii = 0

End If

End Sub


Daniel
0
Beuzzette Messages postés 25 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 20 juin 2007
19 déc. 2005 à 12:36
Salut !!

Les code que vous m'avez proposer ne marche pas .

Un autre question est-ce possble b'activer les lien dans mon chat c'est a dir que des que j'ecris genre :http://.......com il se mais en bleu et je peut clique sur le lien.

Si on peut sa m'interesse svp
0
Beuzzette Messages postés 25 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 20 juin 2007
19 déc. 2005 à 12:44
le test pour ton code j'avais mi sa

Private Sub Txtmessage_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
KeyAscii = 0
End If
End Sub sa marche mais je ne peut plus envoyer avec entre.

par contre j'ai tester sa:

Private Sub Txtmessage_KeyUp(KeyCode As Integer, Shift As Integer)
If Not Shift And KeyCode = 13 Then
KeyCode = 0
Cmdsend_Click
txtmessage = ""
End If
End Sub

Sa marche mais je ne peut plus sauter de lignes. Ya t-il une solution ??

Merci d'avance
++
0
Beuzzette Messages postés 25 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 20 juin 2007
19 déc. 2005 à 12:46
ENfin je peut sauter des lignes mais elel revien automatiquement en premier ligne... C'est c**** si sa revien toujour
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
19 déc. 2005 à 12:52
pas la peine de mettre KeyPress et KeyUp à la fois.

à quel moment tu rajoutes des lignes ?

Txtmessage = Txtmessage & nouveau_message & vbCrLf





Private Sub Txtmessage_KeyPress(KeyAscii As Integer)
If KeyAscii = vbKeyReturn Then
KeyAscii = 0
Cmdsend_Click
txtmessage = ""
End Sub



Daniel
0
Beuzzette Messages postés 25 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 20 juin 2007
19 déc. 2005 à 13:32
Nop sa ne marche pas

Mais on peut pas mettre un code pour empecher au curseur qui clignote a revnir a la premier ligne du textbox ??

Car si je mais sa

Private Sub Txtmessage_KeyUp(KeyCode As Integer, Shift As Integer)
If Not Shift And KeyCode = 13 Then
KeyCode = 0
Cmdsend_Click
txtmessage = ""
End If
End Sub

Sa marche nikel sauf que le curseur remonte a la premier ligne des que je fais Shift + Entrée ( pour sauter une ligne quoi )
0
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
19 déc. 2005 à 15:09
je ne comprends pas, ton TextBox devrait être vide ???

ton test est faux, Shift n'est pas un Booleen:

If Shift 0 And KeyCode 13 Then ...

d'autre part je pense que KeyCode = 0 n'a aucun effet ici



Daniel
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
19 déc. 2005 à 15:26
on en revient donc à mon code plus haut.... ;)

si si, KeyCode = 0 au Up, çà fonctionne.
0
Rejoignez-nous