PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → mot en majuscule
mot en majuscule
Débuté par Stephane Vital OHOU, 13 juin 2022 17:02 - 7 réponses
Membre enregistré
146 messages
Popularité : +2 (4 votes)
Posté le 13 juin 2022 - 17:02
S'il vous plait, quel est le code qui pourra mettre un mot en majuscule apres avoir cliqué sur la touche espace de mon clavier.
Exempl: j''écris

Bonjour monsieur jean

je souhaite avoir:

Bonjour Monsieur Jean

--
Très respectueusement
Membre enregistré
1 144 messages
Popularité : +50 (142 votes)
Posté le 13 juin 2022 - 17:09
désolé erreur
Message modifié, 13 juin 2022 - 17:10
Membre enregistré
874 messages
Popularité : +39 (51 votes)
Posté le 13 juin 2022 - 17:36
Bonjour,

Perso, j'avais fait une Procédure globale qui éclatait la valeur saisie, délimitée par un blanc, pour mettre en majuscule la première lettre des groupes éclatés.
C'était valable dans le cas d'un nom, prénom, ou d'une adresse ....

Cette procédure était appelée, dans évènement "A chaque modification" sur la zone de saisie.

Pour éclater , voir https://doc.pcsoft.fr/?1000022322&lang=fr-FR&productversion=xxF260101d

Bien penser à supprimer deux espaces consécutifs par un seul avec https://doc.pcsoft.fr/?3024022&lang=fr-FR&productversion=xxF260101d dans la procédure globale ...



++
Christian

--
Christian - kick71
Message modifié, 13 juin 2022 - 17:39
Membre enregistré
146 messages
Popularité : +2 (4 votes)
Posté le 18 juin 2022 - 14:48
Salut Kick71,

Merci pour le propositions de réponses intéressantes, mais je manipule dans tous les sens, je ne trouve pas.
Voila ma préoccupation.
Dans mon projet, j'ai un champ où je saisie les noms et prénoms. J'aimerais, après avoir saisi un nom, mettre un espace, saisir le second pour qu'il commence automatiquement par une majuscule, mettre un espace, saisir le suivant qui doit commencer aussi automatiquement par une majuscule et ainsi de suite.

--
Très respectueusement
Membre enregistré
286 messages
Popularité : +24 (28 votes)
Posté le 18 juin 2022 - 15:35
Bonjour,

Je ne vois vraiment pas où est le problème ...

Tu fais une boucle avec le résultat de la fonction "ChaineDécoupe"
Ensuite tu mets le premier caractère de chaque élément en Majuscule avec le fonction Majuscule ...

Sans aucune critique de quoi que ce soit, je t'invite vraiment à suivre le guide d'autoformation, ,
tu gagneras énormément de temps et gagneras beaucoup en expérience, nous sommes tous passé par là ;-)

Bien Cordialement
Membre enregistré
874 messages
Popularité : +39 (51 votes)
Posté le 19 juin 2022 - 12:09
Hello,

Comme dit Gemini ( bientôt la retraite :-) ), il faut que tu prennes le temps de regarder les exemples et autoformations.
Cela ne pourra être que bénéfique pour toi, pour l'avancement du projet, les évolutions et sa maintenance.

Tu gagneras du temps et de la satisfaction, sans compter sur les aides nombreuses, variées des autres développeurs.

Tu reviendras sur le forum bien sûr comme beaucoup d'autres, car des cas semblant compliqués sont résolus simplement ou plus simplement que tu ne pensais ...

Bon courage, persiste et signe ton application :-)


--
Christian - kick71
Message modifié, 19 juin 2022 - 12:09
Membre enregistré
93 messages
Popularité : +1 (1 vote)
Posté le 20 juin 2022 - 18:07
Je pense qu'il faut:
-capturer l'appui sur la touche "Espace" dans ton champ de saisie : événement supplémentaire WM_CHAR et tester _EVE.wParam qui doit être égal à 32
-si c'est le cas, sauvegarder l'emplacement du curseur dans le champ (Moimeme..Curseur)
-faire les manipulations de chaînes qui vont bien (chainedecoupe comme dit plus haut ou parcourir la chaine lettre par lettre, dès que tu rencontre un nouveau mot tu mets la letre en mjausucle, etc...)
-remplacer contenu de la zone de saisie par le résultat de cette transformation
-redéfinir la position du curseur par celle sauvegardée auparavant car le fait de remplacer le contenu aura bougé le curseur
Membre enregistré
146 messages
Popularité : +2 (4 votes)
Posté le 24 juin 2022 - 19:23
Salut à tous et grand merci pour vos différentes réactions.
J'ai suivant vos conseils et voila ce que j'ai ressorti. Sa marche très bien dans mon projet:

DEUX ETAPES QUI SONT :

1 -ON CREE UNE PROCEDURE LOCAL ET A L'INTERIEUR ON MET LE CODE SUIVANT

// on mémorise l'emplacement initial du curseur (important pour plus tard)
sSource est une chaîne ANSI = Pchampdesaisie..Valeur
nCurseur est un entier = Pchampdesaisie..Curseur
sSeparateur est une chaîne = ""
sResultat est une chaîne = ""
nCodeTouche est un entier = _EVE.wParam // on récupère le code de la touche appuyée
// on distinguera le cas ou l'on est en train d'insérer du texte en milieu de chaine
bInsertion est un booléen = nCurseur < Taille(Pchampdesaisie..Valeur)

// on laisse les caractères spéciaux tranquilles
SI nCodeTouche<33 ALORS RETOUR
// on laisse tranquille les flèches directionnelles aussi
SI nCodeTouche>= 0x23 _ET_ nCodeTouche <=0x28 ALORS RETOUR
// pour chaque mot de notre chaine ...
// (ici différents types de séparateurs tolérés)
POUR TOUTE CHAÎNE sMot, nPositionSeparateur DE sSource SÉPARÉE PAR [" ","-",";","/",":","_",".","?","!",","]
/// on met la première lettre en majuscule, et le reste en minuscule
// un faux séparateur ne nous intéresse pas (avant le premier mot)
SI nPositionSeparateur <2 ALORS
sSeparateur = " "
SINON
// on récupère le caractère du séparateur (virgule ? espace ? etc ?)
sSeparateur = Milieu(sSource,nPositionSeparateur-1,1)

FIN
sResultat+= sSeparateur + Majuscule(sMot[[1]]) + Minuscule(Milieu(sMot,2))
//sResultat+= " " + Majuscule(sMot[[1]]) + Minuscule(Milieu(sMot,2))
FIN
// on réaffecte la chaine au champ
Pchampdesaisie = Milieu(sResultat,2) // on retire le premier espace de la boucle
// en n'oubliant pas de passer le curseur à la position suivante (telle que mémorisée au début + 1)
SI PAS bInsertion ALORS
Pchampdesaisie..Curseur = nCurseur+1
SINON
// sauf si on est en insertion, ou l'on remet le curseur au même endroit.
Pchampdesaisie..Curseur = nCurseur
FIN

2 - DANS LE CODE DU CHAMP DANS LA PARTIE : Touche relâchée (WM_KEYUP) du champ de saisie

MajusculesSurPremieresLettres_SurToucheRelachées(MoiMême)

--
Très respectueusement