Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
Y a-t-il une fonction power Builder permettant d’insérer une chaîne de caractères dans la position de curseur
Exemple :
Initialement dans la zone de saisie j’ai la chaîne suivante
"Bonjour Toto"
Supposant que le curseur est entre les deux chaînes (« Bonjour » et « Toto ») et je veux par clique bouton insérer le mot « Monsieur » dans la position de curseur.
Édit : j'ai (seki) corrigé une typo dans le titre (gênant pour la recherche)
Dernière modification par seki (12-11-2012 13:44:10)
Hors ligne
Bonjour,
en une seule instruction, je ne crois pas mais tu peux employer un code du type :
Long ll_curpos String ls_textinserted = "Monsieur" String ls_part1,ls_part2 ll_curpos = sle_1.selectedstart( ) ls_part1 = mid(sle_1.text,1,ll_curpos - 1) ls_part2 = mid(sle_1.text,ll_curpos) sle_1.text = ls_part1 + ls_textinserted + ls_part2
Dernière modification par erasorz (12-11-2012 13:20:39)
Hors ligne
Geo a écrit:
Code: pb
ll_curpos = sle_1.selectedstart( )
Ça fonctionne si il n'y a pas de sélection en cours ? (pas de PB sous la main pour tester)
Hors ligne
Oui (If no text is selected, SelectedStart returns the position of the character immediately following the insertion point).
Mais c'est une bonne remarque car, par contre, si on a du texte sélectionné, l'insertion ne se fera plus au curseur mais bien au début de la sélection.
Le code est donc à améliorer
Hors ligne
En utilisant le presse-papier?
Ca permettrait de fonctionner également au niveau des champs d'une datawindow.
Hors ligne
Tu penses à l'instruction ClipBoard() ? Elle permet d'initialiser ou de retrouver le contenu du presse-papier mais comment indiquer au presse papier qu'il doit effectuer un "coller", avec un Send() je suppose (et le handle de la zone dans laquelle faire le coller...) sans compter qu'on écrase le contenu actuel du presse-papier si on appelle l'instruction Clipboard(txt) pour y placer notre texte à insérer (c'est donc à gérer si on ne veut rien faire perdre à l'utilisateur...).
Ca devient tout de suite plus compliqué de dire bonjour à Toto comme ça
Hors ligne
Geo a écrit:
comment indiquer au presse papier qu'il doit effectuer un "coller", avec un Send() je suppose (et le handle de la zone dans laquelle faire le coller...)
Juste pour ça, pas besoin de s’enquiquiner avec la messagerie windows et les handles, il suffit d'utiliser la méthode paste() du contrôle.
Ça s'applique à
la doc PB11.5 a écrit:
EditMask, InkEdit, MultiLineEdit, SingleLineEdit, RichTextEdit, DropDownListBox, DropDownPictureListBox, DataWindow, OLE controls
Hors ligne
seki a écrit:
paste()
C'est en effet plus simple . Merci pour le tuyau.
Hors ligne
Geo a écrit:
... sans compter qu'on écrase le contenu actuel du presse-papier si on appelle l'instruction Clipboard(txt) pour y placer notre texte à insérer (c'est donc à gérer si on ne veut rien faire perdre à l'utilisateur...)....
en même temps ClipBoard renvoie aussi le contenu actuel du presse-papier donc il suffit de faire
String ls_old_clip String ls_new_clip // remplacer le contenu du presse-papier par ls_new_clip ET en même temps sauver l'ancien contenu dans ls_old_clip ls_old_clip = ClipBoard(ls_new_clip) // faire le traitement voulu // restaurer l'ancien contenu du presse_papier ClipBoard(ls_old_clip)
et voilà, ni vu ni connu, testé et approuvé par moi-même
Hors ligne
rincevent a écrit:
Geo a écrit:
... sans compter qu'on écrase le contenu actuel du presse-papier si on appelle l'instruction Clipboard(txt) pour y placer notre texte à insérer (c'est donc à gérer si on ne veut rien faire perdre à l'utilisateur...)....
en même temps ClipBoard renvoie aussi le contenu actuel du presse-papier donc il suffit de faire
Code: PB
String ls_old_clip String ls_new_clip // remplacer le contenu du presse-papier par ls_new_clip ET en même temps sauver l'ancien contenu dans ls_old_clip ls_old_clip = ClipBoard(ls_new_clip) // faire le traitement voulu // restaurer l'ancien contenu du presse_papier ClipBoard(ls_old_clip)et voilà, ni vu ni connu, testé et approuvé par moi-même
Et si il y a autre chose que du texte dans le clipboard ?
Hors ligne
erasorz a écrit:
Et si il y a autre chose que du texte dans le clipboard ?
Et ben maintenant c'est devenu beaucoup plus facile à lire
Hors ligne
Tant que c'est un dessin en ASCII y a pas de problème.
Hors ligne