TextBox, une question simple mais qui me pose problème :
cs_benji78
Messages postés41Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention25 novembre 2008
-
18 juil. 2008 à 22:55
cs_benji78
Messages postés41Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention25 novembre 2008
-
21 juil. 2008 à 19:19
Bonjour/Bonsoir à tous,
J'aurais besoins de votre aide pour résoudre un problème simple sur le papier, mais où je ne trouve pas de solution (Je suis débutant, c'est donc normal ? ) ;
En faite mon problème est divisé en deux parties, qui sont relativement proches.
Mon application ressemble à ceci :
Comme vous pouvez le voir en bas de l'application il y a un TextBox (ayant la propriété) ReadOnly vérifiée (True) et
j'aimerais que pour chaque item que je vais ajouter dans mes List mes variables CD (référant à Commandes de Déclenchement), et CE (référant à Commandes de l'événement) soient modifiée ainf que le text de mon TextBox soit modifié.
Comme vous pouvez le voir le text lors du lancement de l'application est le suivant :
<html><style type= text/css>TEXTAREA { background-color : white; font-family : MS Sans Serif; font-size : 8px;}</style><center> Page 1 |----
Conditions d'événements, , Commande événements, ----
<TEXTAREA ROWS =7 COLS=30 SIZE=255 WRAP=soft readonly>"
+ CD + "</TEXTAREA>, , <TEXTAREA ROWS=7 COLS=50 SIZE=255 WRAP=soft readonly>" + CE +
"</TEXTAREA>
</html>
(Donc CD et CE n'ont pas de valeurs se qui est normal)
Mon second problème qui s'en rapproche est :
Dans une autre fenêtre de mon application, dont voici à quoi cette dernière ressemble pour le moment :
Et lorsque je clique sur l'item : "Message('Entrez votre message ici')"
Une autre fenêtre s'ouvre, et l'utilisateur est invité à entrer dans un TextBox son message.
Puis lorsque celui-ci clique sur le bouton Ok, j'aimerais que son message soit inséré dans le TextBox situé à gauche du bouton Ajouter (et Annuler).
Merci d'avance pour l'aide que vous pourrez m'apporter.
sturtrid
Messages postés133Date d'inscriptiondimanche 20 mai 2007StatutMembreDernière intervention13 juillet 20121 19 juil. 2008 à 06:33
Salut !
Vi, c'est pas faux gillardg...
Bon j'ai pas bien cerné ton 1er problème, tu redéfinis le contenu de ta textbox après modification de ton CD et CE... non?
Pour le second problème (si c'est ça ta question):
- Soit tu utilises une nouvelle form et tu t 'embêtes pour une simple saisie :
= > Soit tu gères l'action du coté de ta form appelante:
(Dans ta newForm, tu devras mettre la valeur "OK" à la
propriété "DialogResult" de ton bouton d'acceptation)
If (newForm.ShowDialog = DialogResult.OK) Then
Me.TextBoxDeGauche.Text = newForm.TextBoxDeSaisie.Text
EndIf
=> Soit tu gères l'action du coté de ta form appelée:
newForm.Show() --> A mettre dans la classe de ta formAppelante
(Code ci-dessous à placer dans la classe de ta newForm)
Private Sub tonBouton_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles tonBouton.Click
formAppelante.TextBoxDeGauche.Text =Me.TextBoxDeSaisie.Text
Me.Close()
End Sub
cs_benji78
Messages postés41Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention25 novembre 2008 19 juil. 2008 à 12:13
Alors premier problème -> je réexplique , en mieux :)
En faite oui , j'aimerais que pour chaque item que va venir s'ajouter dans mes deux listes, j'extrait l'item puis je l'ajoute à CD pour les items du groupe Commandes de Déclenchement, séparé par un retour chariot en html, donc "
",ainsi que tous les items qui viendront s'ajouter à ma liste du groupe Commande de l'événement, pour CE.
J'espère que vous comprennez mieux.
Sinon -> "tu redéfinis le contenu de ta textbox après modification de ton CD et CE... non?"
C'est ça.
Ensuite second problème:
"
=> Soit tu gères l'action du coté de ta form appelée:
newForm.Show() --> A mettre dans la classe de ta formAppelante
(Code ci-dessous à placer dans la classe de ta newForm)
Private Sub tonBouton_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles
tonBouton.Click
C'est comme cette solution que j'ai choisi car j'effectue une action du côté de la Form appellée (comptage des caractères entrés).
J'ai essayé pour mon test d'utiliser des commandes simples :
Private
Sub ButtonCEMessageOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonCEMessageOk.Click
If TextBox1.Text.Length > 5 Or TextBox1.Text.Length = 5 Then
FormCEajouter.TextBoxCE.Text = Me.TextBox1.Text
FormCEajouter.ListBoxCommandes.SelectedItem = "Message('Entrez votre message ici')"
FormCEajouter.Update()
Me.Close()
ElseIf TextBox1.Text.Length < 5 Then
FormCEajouter.TextBoxCE.Text = "Test"
FormCEajouter.ListBoxCommandes.SelectedItem = "Message('Entrez votre message ici')"
FormCEajouter.Update()
Me.Close()
EndIf
EndSub
Et voici se que j'utilise pour appeler la fenêtre FormCEMessage
Private
Sub ListBoxCommandes_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBoxCommandes.DoubleClick
If ListBoxCommandes.SelectedItem = "Message('Entrez votre message ici')"Then
Dim frm AsNew FormCEMessage
TextBoxCE.Text = "Message('Votre Message')"
Me.Update()
frm.ShowDialog()
ElseIf
ListBoxCommandes.SelectedItem = "Condition('Appuie Sur Bouton')"
Then
Dim frm AsNew FormCEcondition
frm.ShowDialog()
ElseIf ListBoxCommandes.SelectedItem = "AddObject(Nom Objet)"
Then
Dim frm AsNew FormCEAddObject
frm.ShowDialog()
EndIf
EndSub
Ce qui m'étonne c'est que le message "Message('Votre Message')", s'affiche correctement, mais qu'avec la méthode que vous me conseillez, cela ne change pas le text affiché par TextBoxCE...
sturtrid
Messages postés133Date d'inscriptiondimanche 20 mai 2007StatutMembreDernière intervention13 juillet 20121 19 juil. 2008 à 16:49
Salut Benji !
Bein pour redéfinir le contenu de ta TextBox, tu fais comme pour la remplir la 1er fois...
Par exemple tu peux faire une petite sub qui s'en chargera à chaque fois :
Sub RedefTextBox(ByVal CD As String ,
ByVal CE As String)
TextBox.Text= "<html><style
type=text/css>TEXTAREA { background-color : white; font-family : _
MS
Sans Serif; font-size : 8px;}</style><center> _
Dans cet exemple tu passes CD et CE en paramètre si ce sont des variables locales (Déclarées dans une procédure). Si ce sont des variables globales (Déclarées dans la zone de déclaration d'un module), tu n'as pas besoin de les passer en paramètre et la déclaration de ta Sub sera donc :
sturtrid
Messages postés133Date d'inscriptiondimanche 20 mai 2007StatutMembreDernière intervention13 juillet 20121 19 juil. 2008 à 17:55
Re
Pour ton test de comptage des caractères entrés, tu peux simplifier un peu...
If
(TextBox1.TextLength >= 5)
Then Ici tu regroupes tes 2 tests et ton opérateur logique...
[...]
Else
[...]
End If
Du coup ton Else représente le seul cas restant... Soit
TextBox1.TextLength
< 5
Petite astuce obsolète...
Tu peux mettre
TextBox1.TextLength à la place de
TextBox1.Text.Length
Sinon tu peux aussi gérer ça coté formAppelante (autre solution) :
If (newForm.ShowDialog = DialogResult.OK)Then
If
(TextBox1.TextLength >= 5)
Then Ici tu regroupes tes 2 tests et ton opérateur logique...
[...]
Else
[...]
End If
End If
Et même en utilisant une InputBox :
Dim userMsg As String = _
InputBox("Ton message", "Titre fenêtre", _
"Réponse par défaut")
If (userMsg <> "Réponse par défaut") Then
If (userMsg.Length >= 5) Then
[...]
Else
[...]
End If
End If
"Ce
qui m'étonne c'est que le message "Message('Votre Message')", s'affiche
correctement, mais qu'avec la méthode que vous me conseillez, cela ne
change pas le text affiché par TextBoxCE..."
C'est ce que je t'ai proposé qui ne marche pas? Je ne comprends pas... (Fait attention à l'emploi de .Show et .ShowDialog suivant la méthode choisie [voir mon exemple coté form appelante ou appelée])
cs_benji78
Messages postés41Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention25 novembre 2008 19 juil. 2008 à 20:46
Salut, J'ai utilisé la technique expliqué dans ton premier post avec le code suivant :
Sub
RedefTextBox()
Dim cditem
As
Object
For
Each cditem
In CDList.Items
CD = CD + cditem +
"
"
Next
Dim ceitem
As
Object
For
Each ceitem
In CDList.Items
CE = CE + ceitem +
"
"
Next
Html.Text =
"<html><style type=text/css>TEXTAREA { background-color : white; font-family : MS Sans Serif; font-size : 8px;}</style><center> Page 1 |----
Conditions d'événements, , Commandes événements, ----
<TEXTAREA ROWS =7 COLS=30 SIZE=255 WRAP=soft readonly>" + CD +
"</TEXTAREA>, , <TEXTAREA ROWS=7 COLS=50 SIZE=255 WRAP=soft readonly>" + CE +
"</TEXTAREA>
</html>"
End
Sub
Mais je me demandais : pour actualiser mon TextBox, donc lorsque j'ajouterais, ou modifierais des items sur mon ListBox, quelle commande dois-je utiliser pour appeler le
Sub RedefTextBox()
[...]
End Sub
?
"Pour ton test de comptage des caractères entrés, tu peux simplifier un peu..."
Merci, effectivement c'est mieux, ça évite les commandes implicites.
Pour le second problème :
"Orfrm.ShowDialog() envoie vers la form qui modifiera le contenu de ta
TextBoxCE, donc je ne vois pas l'utilité d'en modifier le contenu juste avant..."
C'est vrai que ce n'est pas très utile la commande modifiant le texte lors du clique sur l'item, mais là n'est pas le but de se que je souhaite faire ^^, j'aimerais qu'à la place de "Votre message" apparaisse, justement, le message de l'utilisateur.
Par ailleurs je note que la méthode utilisant l'inputbox marche.
Mais pour que je puisse l'utiliser j'aimerais savoir s'il était possible d'utiliser cette Sub :
Private
Sub TextBox1_TextChanged(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles TextBox1.TextChanged
' compter le nombre de caractères entrés dans la texte box :
If TextBox1.Text.Length = 5
Then
' remplacer la dernière touche espace préssée :
ind = TextBox1.Text.LastIndexOf(
" ")
sturtrid
Messages postés133Date d'inscriptiondimanche 20 mai 2007StatutMembreDernière intervention13 juillet 20121 20 juil. 2008 à 19:54
"Mais je
me demandais : pour actualiser mon TextBox, donc lorsque j'ajouterais,
ou modifierais des items sur mon ListBox, quelle commande dois-je
utiliser pour appeler le
Sub RedefTextBox()"
Je ne dois pas avoir bien compris ta question car je ne vois pas trop le souci. Tu fais ton appel à la suite des instructions qui te permettent d'ajouter ou de modifier tes items... Par contre, je vois que tu ne passes pas CD,CE... en paramètre donc comme je te disais, il faut que tes variables soient globales sinon ça marchera pô... Ou alors il s'agit de leur déclaration implicite (Option Explicit off), mais ça c'est pas conseillé.
"Mais pour que je puisse l'utiliser j'aimerais savoir s'il était possible d'utiliser cette Sub : Sub TextBox1_TextChanged(
...)"
La pour le coup je comprends vraiment pas le rapport avec l'InputBox...
D'ailleurs, c'est quoi ce programme ?
cs_benji78
Messages postés41Date d'inscriptionlundi 19 décembre 2005StatutMembreDernière intervention25 novembre 2008 21 juil. 2008 à 19:19
Alors c'est un programme qui va servir aux créateurs d'un petit MMORPG 2D, les créateurs utilisent un programme similaire à celui-ci pour créer le jeu.
Mon programme va quant à lui servir à se que les créateurs puissent poser les questions et exposer les problèmes vis-à-vis de la programmation de l'autre logiciel.
Mais pour expliquer les choses clairement, il vaut mieux utiliser le code HTML généré par mon programme plutôt que de faire une longue liste des codes à rentrer pour réaliser se que l'on veut.
Voila se que donne à l'état brute le code HTML :
http://christau.benjamin.free.fr/test.html
Je suis désolé de devoir te faire remonter toute la page pour voir les screen que j'ai fait, mais pour mieux comprendre je pense que cela peut aider :).
Donc l'utilisateur arrive au lancement de l'application sur l'image de la première screen.
Puis lorsqu'il clique sur le bouton "Ajouter" du second groupe de contrôle, que j'ai appelé "Commandes de l'événement", c'est le second screen que j'ai fait qui apparaît.
Puis lorsque l'utilisateur clique sur le premier item ( Message('Entrez votre message ici') ) Une autre fenêtre s'ouvre ou le joueur est invité à rentrer dans un TextBox son message. Enfin lorsque se dernier clique sur "Ok" je souhaiterais que son message apparaisse de cette manière :
"Message('" + TextBox1.Text + "')"
Dans le TextBox du second screen.
On peut voir aussi sur le second screen qu'il y a un bouton ajouter à droite du TextBox. Lorsque l'utilisateur va cliquer sur ce bouton cette commande va s'executer :