Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| comment contrôler la saisie d'un EDIT ? | |
| | Auteur | Message |
---|
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: comment contrôler la saisie d'un EDIT ? Lun 7 Avr 2014 - 0:17 | |
| Bonjour, Je cherche à contrôler les entrées clavier dans des objets EDIT. Je souhaite que seuls les touches numériques et la virgule soient actifs. J'ai fait cette petite routine, mais comment empêcher de mettre 2 virgules dans un nombre ? Merci de votre aide. Bien amicalement, Marc - Code:
-
' Contrôle de saisie caractère par caractère d'un objet EDIT
' but : exclure les caractères non autorisés ' : substituer le point par une virgule
label controle_saisie
dim a$ : ' dernier caractère frappé dim L : ' nombre de caractères saisis
' ------------------ programme principal --------------------------------- edit 1 left 1, 100 top 1, 100 on_change 1 , controle_saisie
end
' ------------------------------------------------------------------------ controle_saisie:
a$=right$(text$(1),1):' extraction dernier caractère frappé
if a$="" then return
if a$="," then return
if a$ ="." then L=len(text$(1)):text 1, left$(text$(1),L-1) + ",":caret_position 1, L :return
if asc(a$)<48 or asc(a$)>57 then L=len(text$(1)):text 1, left$(text$(1),L-1):caret_position 1,L-1: return
return | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: comment contrôler la saisie d'un EDIT ? Lun 7 Avr 2014 - 0:58 | |
| Tu peux charger le fichier KGF_OBJ.bas sur mon WebDav, dossier DLLs\KGF_SUB\.
Ce fichier contient des procédures pour chaque objet Panoramic, ainsi que pour quelques pseudo-objets de ma création. C'est du code Panoramic pur, sans utilisation de DLLs.
Deux procédures peuvent être utiles: xEditFilter et xEditMask. Cette dernière permet de spécifier un masque de saisie, en précisant le jeu de caractèred autiorisé à chaque position du texte à saisir.
Tu peux extraire ces procédures pour les inclure dans ton source, ou simplement ajouter la ligne suivante à la toute fin de ton programme: #INCLUDE "KGF_OBJ.bas"
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: comment contrôler la saisie d'un EDIT ? Lun 7 Avr 2014 - 8:05 | |
| Je te propose une Sub que j'utilise dans un programme, à toi de l’adapter à ton besoin. - Code:
-
dim ok$,a$,b$ label ctrl_nom edit 1 on_change 1,ctrl_nom END
ctrl_nom: ' contrôle la saisie caractère par caractère a$=text$(1) Ctrl_Caracteres_Interdits(a$) if ok$="N" if len(a$)>1 b$=upper$(left$(a$,len(a$)-1)):text 1,b$:caret_position 1,len(b$) else text 1,"" end_if end_if return ' ------------------------------------ Sub Ctrl_Caracteres_Interdits(chaine$) ok$="" dim_local a%,car1$ for a%=1 to len(chaine$) car1$=mid$(chaine$,a%,1) if asc(car1$)>0 and asc(car1$)<32 then message_car_interdit(car1$):exit_sub if asc(car1$)>32 and asc(car1$)<48 then message_car_interdit(car1$):exit_sub if asc(car1$)>57 and asc(car1$)<65 then message_car_interdit(car1$):exit_sub if asc(car1$)>90 and asc(car1$)<95 then message_car_interdit(car1$):exit_sub if asc(car1$)=96 then message_car_interdit(car1$):exit_sub if asc(car1$)>122 then message_car_interdit(car1$):exit_sub next a% End_sub ' ------------------------ Sub message_car_interdit(car$) message "Le caratère [ "+car$+" ] est interdit":ok$="N" End_sub
A+ | |
| | | Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: comment contrôler la saisie d'un EDIT ? Lun 7 Avr 2014 - 11:58 | |
| Merci Klaus et Jean-Claude de votre réactivité et de votre partage.
Je vais étudier tout ça.
Bonne journée ensoleillée !
Marc | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: comment contrôler la saisie d'un EDIT ? Jeu 11 Sep 2014 - 20:56 | |
| Bonsoir Marc37, Je relance ce sujet, car j'aimerais savoir où tu en es ? Et en le relisant, je m'aperçois que j'ai répondu à coté et que Klaus t'a proposé une solution avec DLL (je ne crois pas que c'est ce que tu cherches). - Marc37 a écrit:
- Je cherche à contrôler les entrées clavier dans des objets EDIT.
Je souhaite que seuls les touches numériques et la virgule soient actifs. J'ai fait cette petite routine, mais comment empêcher de mettre 2 virgules dans un nombre ?
Comme quoi, on devrait mieux lire et comprendre.... En réalité, tu as juste besoin de la fonction NUMERIC(V$), où V$ représente la saisie dans lédit. Cette fonction retourne 1 si la valeur est numérique (y compris avec la virgule) et 0 s'il y a un caractère alphanumérique. ET, surtout, si tu tape 2 virgules, çà ne passe pas. Bonsoir. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: comment contrôler la saisie d'un EDIT ? Jeu 11 Sep 2014 - 21:05 | |
| Voici ton code avec la fonction NUMERIC(V$) - Code:
-
' Contrôle de saisie caractère par caractère d'un objet EDIT
' but : exclure les caractères non autorisés ' : substituer le point par une virgule
label controle_saisie
dim a$ : ' dernier caractère frappé dim L : ' nombre de caractères saisis
' ------------------ programme principal --------------------------------- edit 1 left 1, 100 top 1, 100 on_change 1 , controle_saisie
end
' ------------------------------------------------------------------------ controle_saisie:
a$=text$(1) if numeric(a$)=0 then message "Attendu: valeur numérique" : text 1,""
return
A+ | |
| | | Contenu sponsorisé
| Sujet: Re: comment contrôler la saisie d'un EDIT ? | |
| |
| | | | comment contrôler la saisie d'un EDIT ? | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |