PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Une histoire de guillemets
Une histoire de guillemets
Started by paul.gera, Mar., 26 2006 7:26 PM - 17 replies
Posted on March, 26 2006 - 7:26 PM
Bonjour,

Un client, très à cheval sur la langue française, me demande de remplacer
les guillemets "" par des guillements <<>> (comme dans Word).

Comment faire ceci avec Windev ?

Merci de votre réponse.
Posted on March, 26 2006 - 9:08 PM
Bonjour,


LIB_Libellé1..Libellé = Caract(171)+ "Bonjour" + Caract(187)
Posted on March, 27 2006 - 3:37 PM
OK mais là c'est pour le définir dynamiquement...

> Comment faire pour le définir dans un champ de saisie ?
Posted on March, 27 2006 - 6:38 PM
ALT + 174 et ALT + 175

« »
Posted on March, 27 2006 - 7:17 PM
Je ne peux quand meme pas demander aux utilisateurs d'avoir recours à cette
méthode... si ?


"Damien T." <guest@newsgroup.fr> a écrit dans le message de news:
4427f8d5@news.pcsoft.fr...


ALT + 174 et ALT + 175

« »


Posted on March, 27 2006 - 8:06 PM
Il se trouve que Paul a formulé :
Je ne peux quand meme pas demander aux utilisateurs d'avoir recours à cette
méthode... si ?


Bonjour,

Bien sur que non, mais tu peux mémoriser ces séquences dans 2 touches de fonction inutilisées...

Freddie

--
freddie3@wanadoo.fr
Posted on March, 27 2006 - 8:06 PM
1= Déclarer un booleen en global dans la fenetre
bDrapeau est un booleen=Faux

Dans le code de ton champ texte 'A chaque Modification....'
Tu peux mettre ce bout de code. Il peut certainement être améliorer !!

[Code]
nTouche est un entier = 0x33 // Touche "
nCurseur est un réel=MoiMême..Curseur
QUAND EXCEPTION DANS
SI ToucheEnfoncée(nTouche) ALORS
ExceptionDéclenche(bDrapeau)
FIN

FAIRE
SELON bDrapeau
CAS Faux
MoiMême=Milieu(MoiMême,1,nCurseur-2)+"<<"+Milieu(MoiMême,nCurseur)
bDrapeau=Vrai
CAS Vrai
MoiMême=Milieu(MoiMême,1,nCurseur-2)+">>"+Milieu(MoiMême,nCurseur)
bDrapeau=Faux
FIN
ExceptionActive()
// On reprend le traitement
MoiMême..Curseur=nCurseur
RepriseSaisie()

FIN
Posted on March, 27 2006 - 8:51 PM
OK Claude. Mais quand je vais ajouter la valeur du champ dans mon fichier,
quels types de guillements Windev va t il retenir ?



"MANDIN" <Cm16.top@wanadoo.fr> a écrit dans le message de news:
44280cf0$1@news.pcsoft.fr...

1= Déclarer un booleen en global dans la fenetre
bDrapeau est un booleen=Faux

Dans le code de ton champ texte 'A chaque Modification....'
Tu peux mettre ce bout de code. Il peut certainement être améliorer !!

[Code]
nTouche est un entier = 0x33 // Touche "
nCurseur est un réel=MoiMême..Curseur
QUAND EXCEPTION DANS
SI ToucheEnfoncée(nTouche) ALORS
ExceptionDéclenche(bDrapeau)
FIN

FAIRE
SELON bDrapeau
CAS Faux

MoiMême=Milieu(MoiMême,1,nCurseur-2)+"<<"+Milieu(MoiMême,nCurseur)
bDrapeau=Vrai
CAS Vrai

MoiMême=Milieu(MoiMême,1,nCurseur-2)+">>"+Milieu(MoiMême,nCurseur)
bDrapeau=Faux
FIN
ExceptionActive()
// On reprend le traitement
MoiMême..Curseur=nCurseur
RepriseSaisie()

FIN

Posted on March, 27 2006 - 10:41 PM
Le champ sera enregistré telquel ce 'est a dire avec les guillements << et >>.
Mais ce bout de code et a perfectionner. Par exemple lors de la suppression de la guillement ouverture afin de repositionner le drapeau.
Si j'ai 5 minutes je regarderai cela et je le posterai
Posted on March, 28 2006 - 4:21 PM
Apparament ma réponse n'est pas passée olars je la renvoie.

Dans le code de ton champ Texte.
[Code ENTREE]
bDrapeau=rechercheGuillemet(MoiMême..Nom)
[Code A CHAQUE MODIFICATION]
VK_GUILL est un entier = 0x33 // Guillemet "
VK_BACK est un entier = 0x08 // Suppression Arrière
VK_DELETE est un entier = 0x2e // Suppression
rCurseur est un réel=MoiMême..Curseur
SI ToucheEnfoncée(VK_DELETE) OU ...
ToucheEnfoncée(VK_BACK) ALORS
bDrapeau=rechercheGuillemet(MoiMême..Nom)
FIN
QUAND EXCEPTION DANS
SI ToucheEnfoncée(VK_GUILL) ALORS
ExceptionDéclenche(bDrapeau)
FIN
FAIRE
SELON bDrapeau
CAS Faux // Guillemet Ouvrante
MoiMême=Milieu(MoiMême,1,rCurseur-2)+Caract(171)+Milieu(MoiMême,rCurseur)
bDrapeau=Vrai
CAS Vrai // Guillemet Fermante
MoiMême=Milieu(MoiMême,1,rCurseur-2)+Caract(187)+Milieu(MoiMême,rCurseur)
bDrapeau=Faux
FIN
ExceptionActive()
// On reprend le traitement
MoiMême..Curseur=rCurseur
RepriseSaisie()
FIN

[Création D'une procédure Globale ou Locale]

PROCEDURE rechercheGuillemet(_NomChamp)
nposCurs est un entier={_NomChamp,indChamp}..Curseur
schaine est une chaîne={_NomChamp,indChamp}..Valeur
i est un entier=1
nGuillemet_Ouvrante est un entier
nGuillemet_Fermante est un entier
TANTQUE i<Taille({_NomChamp,indChamp}..ValeurAffichée)
SI Position({_NomChamp,indChamp}..ValeurAffichée,Caract(171),i)>0 ALORS
nGuillemet_Ouvrante+=1
i=Position({_NomChamp,indChamp}..ValeurAffichée,Caract(171),i)+1
FIN
SI Position({_NomChamp,indChamp}..ValeurAffichée,Caract(187),i)>0 ALORS
nGuillemet_Fermante+=1
i=Position({_NomChamp,indChamp}..ValeurAffichée,Caract(187),i)+1
SINON
i=Taille({_NomChamp,indChamp}..ValeurAffichée)
FIN
FIN
SI nGuillemet_Fermante <nGuillemet_Ouvrante ALORS RENVOYER Vrai
RENVOYER Faux

c'est tout, j'ai essayé cela fonctionne

Mon adresse si tu ne comprends pas
cm16.top@wanadoo.fr
Posted on March, 28 2006 - 9:08 PM
Je ne sais pas pourquoi, j'ai voulu employer les exceptions mais ce n'est pas la peine

[Code ENTREE]
bDrapeau=rechercheGuillemet(MoiMême..Nom)
[Code A CHAQUE MODIFICATION]
VK_GUILL est un entier = 0x33 // Guillemet "
VK_BACK est un entier = 0x08 // Suppression Arrière
VK_DELETE est un entier = 0x2e // Suppression
rCurseur est un réel=MoiMême..Curseur
SI ToucheEnfoncée(VK_DELETE) OU ...
ToucheEnfoncée(VK_BACK) ALORS
bDrapeau=rechercheGuillemet(MoiMême..Nom)
FIN
SI ToucheEnfoncée(VK_GUILL) ALORS
SELON bDrapeau
CAS Faux // Guillemet Ouvrante
MoiMême=Milieu(MoiMême,1,rCurseur-2)+Caract(171)+Milieu(MoiMême,rCurseur)
bDrapeau=Vrai
CAS Vrai // Guillemet Fermante
MoiMême=Milieu(MoiMême,1,rCurseur-2)+Caract(187)+Milieu(MoiMême,rCurseur)
bDrapeau=Faux
FIN
MoiMême..Curseur=rCurseur
RepriseSaisie()
FIN
Posted on March, 30 2006 - 8:08 AM
Bonjour,

***A chaque modification*** (il faudra replacer le curseur)

SI Position(MoiMême,Caract(34))>0 ALORS
i est un entier
POUR il=1 A Position(MoiMême,Caract(34),DepuisFin)
SI ChaîneOccurrence(MoiMême,"«")=ChaîneOccurrence(MoiMême,"»") ALORS
MoiMême=Remplace(MoiMême,Caract(34),"«")
SINON
MoiMême=Remplace(MoiMême,Caract(34),"»")
FIN
FIN
FIN


La ligne POUR TOUTE POSITION ... peut être utilisée avantageusement.
Le logique change un peu pour un traitement en sortie de champ.

Bon dev,
PEGOS
Posted on March, 30 2006 - 10:06 AM
J'utilise la procédure suivante dans les champs : Prénom et Prénom + Nom
Tpeu facilement l'adapter à ton cas

// Met la 1ére lettre de chaque mot en majuscule
// à utiliser sur l'évenement Chaque modification du champ concerné
PROCEDURE SaisieDébutMajuscule(psChamp)
sContenuChamp est une chaîne = {psChamp,indChamp}
nCurseur est un entier = {psChamp,indChamp}..Curseur
SI nCurseur > 2 ALORS
SI sContenuChamp[[nCurseur-2]] DANS (" ", ".", "-") ALORS // liste des
séparateurs de mot
sContenuChamp[[nCurseur-1]] =
Majuscule(SansAccent(sContenuChamp[[nCurseur-1]]))
{psChamp,indChamp} = sContenuChamp
{psChamp,indChamp}..Curseur = nCurseur
FIN
FIN

cordialement JCP

"Paul" <paul.gera@free.fr> a écrit dans le message de news:
44269177$1@news.pcsoft.fr...
Bonjour,

Un client, très à cheval sur la langue française, me demande de remplacer
les guillemets "" par des guillements <<>> (comme dans Word).

Comment faire ceci avec Windev ?

Merci de votre réponse.

Posted on April, 05 2006 - 3:57 PM
Bonjour,

J'utilise votre procédure mais le curseur revien toujours au début du champ
?!!!

Comment éviter cela ?

Sinon, parfait !

MERCI




"Pegos" <pepbob@club.fr> a écrit dans le message de news:
442c741e$1@news.pcsoft.fr...
Bonjour,

***A chaque modification*** (il faudra replacer le curseur)

SI Position(MoiMême,Caract(34))>0 ALORS
i est un entier
POUR il=1 A Position(MoiMême,Caract(34),DepuisFin)
SI ChaîneOccurrence(MoiMême,"«")=ChaîneOccurrence(MoiMême,"»") ALORS
MoiMême=Remplace(MoiMême,Caract(34),"«")
SINON
MoiMême=Remplace(MoiMême,Caract(34),"»")
FIN
FIN
FIN


La ligne POUR TOUTE POSITION ... peut être utilisée avantageusement.
Le logique change un peu pour un traitement en sortie de champ.

Bon dev,
PEGOS
Posted on April, 06 2006 - 5:43 PM
????

Vous avez une solution ???


MERCIIIII




"Paul" <paul.gera@free.fr> a écrit dans le message de news:
4433b087$1@news.pcsoft.fr...

Bonjour,

J'utilise votre procédure mais le curseur revien toujours au début du
champ
?!!!

Comment éviter cela ?

Sinon, parfait !

MERCI




"Pegos" <pepbob@club.fr> a écrit dans le message de news:
442c741e$1@news.pcsoft.fr...
Bonjour,

***A chaque modification*** (il faudra replacer le curseur)

SI Position(MoiMême,Caract(34))>0 ALORS
i est un entier
POUR il=1 A Position(MoiMême,Caract(34),DepuisFin)
SI ChaîneOccurrence(MoiMême,"«")=ChaîneOccurrence(MoiMême,"»") ALORS
MoiMême=Remplace(MoiMême,Caract(34),"«")
SINON
MoiMême=Remplace(MoiMême,Caract(34),"»")
FIN
FIN
FIN


La ligne POUR TOUTE POSITION ... peut être utilisée avantageusement.
Le logique change un peu pour un traitement en sortie de champ.

Bon dev,
PEGOS


Posted on April, 10 2006 - 11:12 AM
Bonjour,

Je réitère ma question car ce code fonctionne très bien mais il repositionne
le curseur au début du champ de saisie et non à la fin.

Quel code utiliser pour que le curseur se repositionne correctement ?

MERCI.

Paul





"JCP" <puccettijc@free.fr> a écrit dans le message de news:
442cc34c$1@news.pcsoft.fr...

J'utilise la procédure suivante dans les champs : Prénom et Prénom + Nom
Tpeu facilement l'adapter à ton cas

// Met la 1ére lettre de chaque mot en majuscule
// à utiliser sur l'évenement Chaque modification du champ concerné
PROCEDURE SaisieDébutMajuscule(psChamp)
sContenuChamp est une chaîne = {psChamp,indChamp}
nCurseur est un entier = {psChamp,indChamp}..Curseur
SI nCurseur > 2 ALORS
SI sContenuChamp[[nCurseur-2]] DANS (" ", ".", "-") ALORS // liste des
séparateurs de mot
sContenuChamp[[nCurseur-1]] =
Majuscule(SansAccent(sContenuChamp[[nCurseur-1]]))
{psChamp,indChamp} = sContenuChamp
{psChamp,indChamp}..Curseur = nCurseur
FIN
FIN

cordialement JCP

"Paul" <paul.gera@free.fr> a écrit dans le message de news:
44269177$1@news.pcsoft.fr...
Bonjour,

Un client, très à cheval sur la langue française, me demande de remplacer
les guillemets "" par des guillements <<>> (comme dans Word).

Comment faire ceci avec Windev ?

Merci de votre réponse.



Posted on April, 18 2006 - 11:05 AM
Mille excuses PAUL

Pour repositionner le curseur il suffit de réutiliser le nCurseur

Moimeme..Curseur=ncurseur
Posted on April, 18 2006 - 4:01 PM
Merci Claude !


"MANDIN Claude" <cm16.top@wanadoo.fr> a écrit dans le message de news:
444486f2$1@news.pcsoft.fr...


Mille excuses PAUL

Pour repositionner le curseur il suffit de réutiliser le nCurseur

Moimeme..Curseur=ncurseur