Positionner un texte dans un label sans passer par alignment

cs_zto Messages postés 3 Date d'inscription jeudi 7 décembre 2006 Statut Membre Dernière intervention 14 octobre 2011 - 9 oct. 2011 à 18:58
cs_zto Messages postés 3 Date d'inscription jeudi 7 décembre 2006 Statut Membre Dernière intervention 14 octobre 2011 - 14 oct. 2011 à 21:23
Bonjour,
Sous VB6
est-il possible de positionner un texte n'importe où dans un label dimensionné pour afficher 40 caractères sur une ligne. Par exemple faire afficher le début d'un texte à l'emplacement du 20ème caractère sans effacer le texte qui débute à l'emplacement du 1er caractère ?
Merci pour votre aide

4 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
9 oct. 2011 à 19:07
Salut

Compliqué tout ça.
Explique pourquoi tu as besoin de ce genre de manip.

Cette phrase est énigmatique
"faire afficher le début d'un texte à l'emplacement du 20ème caractère sans effacer le texte qui débute à l'emplacement du 1er caractère"
S'il ne s'agit que de manipuler du texte, quel est ton réel problème ?
Voir la fonction Mid$
Mid$ ne fait pas que fournir des données, il est capable de faire du remplacement, exemple
A$ = "abcdefghijklmnopqrstuvwxyz"
Mid$(A$, 2, 3) = "000"
donnera
"a000efghijklmnopqrstuvwxyz"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_zto Messages postés 3 Date d'inscription jeudi 7 décembre 2006 Statut Membre Dernière intervention 14 octobre 2011
9 oct. 2011 à 21:53
Bonsoir, merci de votre réponce
J'essaye de faire un programme pour qu'un PC puisse remplacer une console qui est reliée à un automate industriel via une liaison série. La console est équipée d'un affichage sur 2 lignes de 40 caractères chacune et de 18 touches de fonction. Pour faire afficher un texte contenu dans une eeprom de la console, l'automate envoie une commande avec le numéro de la ligne et le numéro du texte à afficher. Jusque là pas de problème, je décode la commande, je vais chercher le texte dans un fichier sur le PC et je le fais afficher par un Label mais toujour en début du label soit aligné à gauche. MAIS, l'automate envoie aussi si nécessaire une commande pour positionner le curseur avant d'envoyer une commande pour afficher du texte ailleur que aligné à gauche.
exemple :
1ère commande afficher les mots : Côte I = mm
2ème commande positionner le curseur en 10ème position
3ème commande affiché le chiffre 20
ce qui donne sur l'afficheur côte I = 20 mm
En cherchant sur le web j'ai trouvé l'idée de travailler avec 2 labels l'un au dessus de l'autre avec label2 avec BackStyle tansparent,
le label1 donnant la couleur de fond avec BacKcolor et BackStyle sur opaque. Je vais essayer d'utilisé le label2 si le curseur doit être positionné. Votre code va me servir pour décaler le texte avec x espaces, x = position du curseur.
En suposant que cela marche, il y a peut être une solution plus académique ? Bonne soirée
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
12 oct. 2011 à 13:14
Pas la peine de chercher des subterfuges de Label l'un sur l'autre.
Tout ceci se règle avec les instructions de base de gestion des chaines de caractères : Left, Right, Mid (et Instr)
Dans ton exemple :
Dim sTemp As String
sTemp = monLabel.Caption
sTemp = Left$(sTemp, 10) & "20" & Mid$(sTemp, 10 + 1)
monLabel.Caption = sTemp
0
cs_zto Messages postés 3 Date d'inscription jeudi 7 décembre 2006 Statut Membre Dernière intervention 14 octobre 2011
14 oct. 2011 à 21:23
Merci,
en effet il y avait plus simple
Bon WE
0