PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Presse-papier vers plusieurs champs de saisie
Presse-papier vers plusieurs champs de saisie
Iniciado por Nicolas ROBIN, 05,jun. 2019 15:36 - 8 respuestas
Miembro registrado
87 mensajes
Publicado el 05,junio 2019 - 15:36
Bonjour,

Auriez-vous une solution à me proposer pour effectuer le traitement suivant, svp?

Supposons que j'ai 2 champs de saisie: SAI_1 et SAI_2 (4 caractères max chacun).
Je copie du texte dans le presse papier à l'aide d'un "CTRL+C" ou "Clic droit + Copier" (exemple: valeur "VAL1VAL2" dans le presse-papier).

Ensuite, j'aimerai que lorsque je clique dans le champs de saisie SAI_1 et fait "CTRL+V" ou "Clic droit + Coller", l'on découpe le contenu du presse-papier de façon à ce que le champ SAI_1 contienne la valeur "VAL1" et le champ SAI_2 contienne la valeur "VAL_2".

Cordialement,

--

NR
Mensaje modificado, 05,junio 2019 - 15:37
Miembro registrado
26 mensajes
Publicado el 05,junio 2019 - 15:49
Sans pouvoir te donner le code essaye de faire un compteur qui s’incrémente à chaque caractère et dès que tu atteint 4 u bloque et le fait passe sur l'autre champs automatiquement
ça vas peut être t'aider https://doc.pcsoft.fr/fr-FR/?3024008

nomdelachaine.occurence() pour avoir la taille max puis si nomdelachaine.occurence()>4 alors et tu sépare en 2 chaines
Mensaje modificado, 05,junio 2019 - 15:51
Miembro registrado
87 mensajes
Publicado el 05,junio 2019 - 15:52
Bonjour,

Pour ce qui est de la découpe, ça ne me pose pas trop de problème.
Là où j'aurai besoin d'un peu d'aide, ce serait plus pour intercepter le "Ctrl+V" et le "Clic droit+Coller" effectués dans le champ SAI_1.

--

NR
Miembro registrado
26 mensajes
Publicado el 05,junio 2019 - 16:10
tu peu ajouter un traitement à ta zone et à ce moment tu lui dit si tu fais un clique droit dans la zone tu active la découpe

!!! je suis débutant en windev je propose des solutions mais je ne suis pas sur qu'elle marche !!!
Mensaje modificado, 05,junio 2019 - 16:15
Miembro registrado
46 mensajes
Publicado el 06,junio 2019 - 20:36
En faisant le "Ctrl+V" ou le "Clic droit+Coller" sur le champ, automatiquement la chaine entière est ajouté dans le champ
Moi, je te propose de créer un menu contextuel, par exemple "Coller Presse papier", et l'associer aux 2 champs

code de "Coller Presse papier" :
sTexte est une chaîne=PressePapier()

SAI_1=Gauche(sTexte,4)
SAI_2=Milieu(sTexte,5)


Bien entendu, lors du clic droit, sur l'un des champs, cliquer sur l'option "Coller Presse papier"
Miembro registrado
2.682 mensajes
Publicado el 07,junio 2019 - 08:35
Bonjour,

Il te suffit de créer un événement de type WM_PASTE sur le champ qui t'intéresse et coder le reste

// Initialisation de la fenêtre
// Déclaration de l'événement
Evénement(coller, SAI_SansNom1..Nom, WM_PASTE)

// Procédure
Procedure coller()

sTexte_A_Coller est une chaîne = PressePapier()

SI Taille(sTexte_A_Coller) = 8 ALORS
SAI_SansNom1 = sTexte_A_Coller[[À 4]]
SAI_SansNom2 = sTexte_A_Coller[[5 À]]
FIN


--
Cordialement,

Philippe SAINT-BERTIN
Miembro registrado
87 mensajes
Publicado el 07,junio 2019 - 09:20
Merci,
C'est exactement la solution que j'ai retenu hier.

--

NR
Miembro registrado
87 mensajes
Publicado el 07,junio 2019 - 16:33
Si cela peut vous aider, voici la solution que j'ai mise en place pour coller un IBAN.

//A insérer à la déclaration de la fenêtre
Evénement(CompteBanque_COLLER_IBAN,SAI_IBAN1..Nom,WM_PASTE)


Procedure CompteBanque_COLLER_IBAN()
incCar est un entier
incCar_Total est un entier
nbCar_Total est un entier

sIBAN est une chaîne
incIBAN est un entier

sChamp_IBAN est une chaîne

sIBAN=PressePapier()
SI sIBAN<>"" ALORS
nbCar_Total=Taille(sIBAN)
POUR incIBAN=1 _A_ 9
incCar=0
sChamp_IBAN="SAI_IBAN"+incIBAN
SI ChampExiste(sChamp_IBAN) ALORS
{sChamp_IBAN,indChamp}=""
POUR incCar=1 _A_ 4
incCar_Total++
SI incCar_Total<=nbCar_Total ALORS
{sChamp_IBAN,indChamp}+=sIBAN[[incCar_Total]]
SINON
SORTIR
FIN
FIN
FIN
FIN
_EVE.Retour = Faux
FIN


--

NR
Mensaje modificado, 07,junio 2019 - 16:34
Miembro registrado
2.682 mensajes
Publicado el 07,junio 2019 - 20:54
Plus synthétiquement, j'aurais fait ça étant donné que l'IBAN est par bloc de 4 caractères

sPartieIBAN est une chaîne
sIBAN est une chaîne
i est un entier = 1

sIBAN=SansEspace(PressePapier(),sscTout)
sPartieIBAN = sIBAN[[i SUR 4]]
TANTQUE sPartieIBAN <> ""
SI ChampExiste("SAI_IBAN"+i) ALORS
{"SAI_IBAN"+i,indChamp} = sPartieIBAN
FIN

sPartieIBAN = sIBAN[[(i*4+1) SUR 4]]
i++
FIN

_EVE.Retour = Faux


--
Cordialement,

Philippe SAINT-BERTIN