astvt
Messages postés45Date d'inscriptiondimanche 6 novembre 2005StatutMembreDernière intervention 2 août 2018
-
12 avril 2007 à 16:46
astvt
Messages postés45Date d'inscriptiondimanche 6 novembre 2005StatutMembreDernière intervention 2 août 2018
-
14 avril 2007 à 15:30
Bonjour, j'ai une feuille avec une zone TextBox, définie en multiligne.
Je cherche à afficher une ligne de texte par Form1.TextBox1.text= mon string de charactères.
Mon problème est que je n'arrive pas a afficher plusieurs lignes les unes en dessous des autres.
Elles s'affichent toujours sur la première ligne de la TextBox.
Je faisai la même chose en VB6 avec une picturebox et la commande print. En VB2005, cela n'est plus possible avec une picturebox.
Exemple en VB6:
J'efface la picturebox si elle fait plus de 15 lignes et je reviens sur la ligne 1 et je recommence.
'affichage du programme,
If Form1.Picture1.CurrentY > 15 Then
Form1.Picture1.Cls
Form1.Picture1.CurrentY = 0
End If
'affichage d'une ligne de text
Form1.Picture1.Print Spc(1); mon string1; ":";mon string2 (affichage sur la ligne1)
Form1.Picture1.Print Spc(1); monstring3;mon string4 (affichage sur la ligne2)
etc..
Merci pour votre aide.
crocejf2000
Messages postés260Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention27 août 20081 12 avril 2007 à 17:13
Salut,
Le fait de faire TextBox1.text = "Toto" affecte la valeur (string) "Toto" à la propriétée Text de ta TextBox, et comme le control TextBox est bien élevé, il m'affiche bien "Toto".
Si je veut afficher sur plusieurs lignes différentes valeurs, il faudra lui dire que l'on a plusieurs lignes, c'est a dire inserer des retour chariot a la fin de notre ligne pour qu'il passe à la suivante :
TextBox1.text = "Toto" 'affecter la valeur "Toto" --> a cet instant, il n'y a que toto dans mon textbox
TextBox1.text &= vbcrlf 'j'ajoute un CR+LF et je le concatene au contenu en cours de la textbox -> a noter que l'opérateur n'est pas '=' mais '&='.
TextBox1.text &= "Titi"
C'est comme si j'avais fait : TextBox1.text = "Toto" & Vbcrlf & "Titi"
astvt
Messages postés45Date d'inscriptiondimanche 6 novembre 2005StatutMembreDernière intervention 2 août 2018 13 avril 2007 à 18:04
Merci Hart, j'ai fait l'exemple et cela fonctionne.
Parcontre j'ai d'autres problèmes :
Ma zone de textbox est limitée en hauteur et il n'est possible d'afficher que 20 lignes. Il est possible de définir une scrolbar verticale mais la dernière ligne n'est pas visible. Il faut faire défilé le curseur de la scrolbar à la fin et recommencer pour chaque nouvelles lignes entrées. Ce n'est pas ce que je souhaite.
Simplement afficher 20 lignes puis au moment d'afficher la 21ème effacer la zone et afficher la 21ème sur la nouvelle première ligne et ainsi de suite au fur et à mesure du déroulement de mon programme.
J'ai essayé le code suivant:
if Me.TextBox1.Lines.Rank > 20 then
Me.TextBox1.Clear()
end if
Apparement cela ne fonctionne pas Rank indique toujours 1.
Mes questions sont :
1 - comment connaître le numéro de ligne en cours?
2 - Es que cela est possible ? je n'est pas trouvé dans l'aide.
3 - Pour faire ce que je désir, un TextBox n'est peut être pas approprié? Un Picturebox en VB2005 ne le permet plus.
crocejf2000
Messages postés260Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention27 août 20081 13 avril 2007 à 18:33
Salut,
Si je comprend bien ce que tu veut faire, et pour palier a tes problèmes de scrollbar (j'avais déja rencontré ce probleme et fait ce que je vais t'éxposer), tu peut tout s'implement insérer ta dernière ligne et haut et pas en bas.
TextBox1.Text = "Titi" & vbcrlf & TextBox1.Text
Comme ca ta ligne ta plus récente sera toujours en haut et plus de problème.
Sinon, si tu veut vraiment faire comme tu dit, déja par rapport a ce que tu propose, c'est normal que Me.TextBox1.Lines.Rank te renvoi toujours 1 car c'est la dimension du tableau de string dans ta textbox, donc UNE dimension, mais plusieurs String dans cette dimension.
Si tu veut avoir le nombre de lignes : TextBox1.Lines.GetLength(0) 'nombre d'élements de la dimension 0
astvt
Messages postés45Date d'inscriptiondimanche 6 novembre 2005StatutMembreDernière intervention 2 août 2018 14 avril 2007 à 11:35
Bonjour Hart, J'ai utilisé ta dernière suggestion .
If TextBox1.Lines.Getlength(0) > 20 then , ca marche impécable comme je le souhaitais.
Une dernière question :
Est-il possible de formater le texte dans un controle TextBox ?
A savoir : avoir une partie de texte sur la gauche puis avec une tabulation une deuxième partie du texte sur la même ligne.
Exemple:
ligne 1 = toto (tab) titi (titi est à la colonne 20 par exemple)
ligne 2 = tagada (tab) les fraises (les fraises à la colonne 20 aussi)
etc..
Merci pour ton aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
crocejf2000
Messages postés260Date d'inscriptionlundi 27 janvier 2003StatutMembreDernière intervention27 août 20081 14 avril 2007 à 12:00
Salut,
Je ne sais pas s'il est possible de formater du text dans une TextBox comme tu le souhaite, mais essaye de fouinner du coté des RichTextBox et du RTF, je pense que tu devrai y trouver ton bonheur.
astvt
Messages postés45Date d'inscriptiondimanche 6 novembre 2005StatutMembreDernière intervention 2 août 2018 14 avril 2007 à 15:30
Merci beaucoup pour ton aide Hart, j'ai trouvé il suffit d'ajouter la commande
vbTab dans le string et automatiquement le texte se décale sur la droite.
Voici un exemple TextBox1.text = "texte 1" & vbTab & "texte 2"
le texte 1 est alligné sur la gauche et texte 2 est décallé sur la droite. Il suffit d'ajouté autant de & vbTab pour décaler le texte de plusieur colonnes.
C'est formidable. Merci beaucoup pour ton aide. Mon problème est résolu.