Pas d'inquiétude, avec PBAdonf, c'est dans la poche ! ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 12-11-2012 10:35:29

infopower  
Membre Power Geek
Lieu: paris
Date d'inscription: 13-04-2011
Messages: 213
Pépites: 1,060
Banque: 0

Insertion d'une chaîne de caractères

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)


la vie est une course et il faut avoir un bon depart

Hors ligne

 

#2 12-11-2012 12:00:36

Geo  
Membre completement Geek
Lieu: Binche
Date d'inscription: 15-12-2008
Messages: 119
Pépites: 378
Banque: 0

Re: Insertion d'une chaîne de caractères

Bonjour,

en une seule instruction, je ne crois pas mais tu peux employer un code du type :

Code: pb

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)


Rien ne sert de courir, il faut partir à point .

Hors ligne

 

#3 12-11-2012 13:46:19

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: Insertion d'une chaîne de caractères

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)


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#4 12-11-2012 14:15:53

Geo  
Membre completement Geek
Lieu: Binche
Date d'inscription: 15-12-2008
Messages: 119
Pépites: 378
Banque: 0

Re: Insertion d'une chaîne de caractères

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


Rien ne sert de courir, il faut partir à point .

Hors ligne

 

#5 12-11-2012 14:24:42

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: Insertion d'une chaîne de caractères

En utilisant le presse-papier?
Ca permettrait de fonctionner également au niveau des champs d'une datawindow.


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#6 12-11-2012 15:51:15

Geo  
Membre completement Geek
Lieu: Binche
Date d'inscription: 15-12-2008
Messages: 119
Pépites: 378
Banque: 0

Re: Insertion d'une chaîne de caractères

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


Rien ne sert de courir, il faut partir à point .

Hors ligne

 

#7 13-11-2012 10:23:46

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: Insertion d'une chaîne de caractères

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


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#8 13-11-2012 12:41:56

Geo  
Membre completement Geek
Lieu: Binche
Date d'inscription: 15-12-2008
Messages: 119
Pépites: 378
Banque: 0

Re: Insertion d'une chaîne de caractères

seki a écrit:

paste()

C'est en effet plus simple . Merci pour le tuyau.


Rien ne sert de courir, il faut partir à point .

Hors ligne

 

#9 13-11-2012 14:58:48

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: Insertion d'une chaîne de caractères

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


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

#10 14-11-2012 09:03:46

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: Insertion d'une chaîne de caractères

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 ? 


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#11 14-11-2012 09:25:05

seki  
0x73656B69
Award: bf
Lieu: Laquenexy & Luxembourg
Date d'inscription: 20-11-2008
Messages: 1118
Pépites: 4,296,080,204
Banque: 9,223,372,036,854,776,000
Site web

Re: Insertion d'une chaîne de caractères

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


The best programs are the ones written when the programmer is supposed to be working on something else. - Melinda Varian

Mes réponses PB sur StackOverflow
http://stackoverflow.com/users/flair/317266.png

Hors ligne

 

#12 15-11-2012 14:39:45

rincevent  
Modérateur
Award: bf
Lieu: Belgique
Date d'inscription: 06-02-2007
Messages: 722
Pépites: 100,002,023
Banque: 0

Re: Insertion d'une chaîne de caractères

Tant que c'est un dessin en ASCII y a pas de problème.


http://img114.imageshack.us/img114/8519/userbar175801nb.gif
Pourquoi ne puis-je vivre comme n'importe quel être humain ? Pourquoi mon destin est-il de ne pouvoir cesser de me battre ?

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22