cs_bertrand_s
Messages postés2Date d'inscriptionvendredi 10 novembre 2006StatutMembreDernière intervention13 novembre 2006
-
12 nov. 2006 à 18:47
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 2022
-
16 nov. 2006 à 20:37
Question de débutant !
Bonjour à tous,
Je demarre sous Delphi et je cherche une solution pour limiter les entrées dans un "edit" à des chiffres et une virgule.
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 13 nov. 2006 à 09:27
salut,
fait juste attention au option régional! certaines langages utilise le point (.) et non la virgule(,) comme séparateur décimal. respecte les préférence de l'utilisateur.
pour lire les options de windows(je sait pas pour linux):
var
tmpformatSettings : TFormatSettings;
begin
GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, tmpformatSettings);
tmpformatSettings.DecimalSeparator <--
lit les une fois au démarrage du prog et stock les dans une unit global.
Tu peux stocker que le séparateur ou le FormatSetting en entier.
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 12 nov. 2006 à 20:28
tu n'as cas surcharger le TCustomEdit, en modifiant la methode Change de cette maniere
procedure Change;
begin
inherited;
if not self.text[length(self.text)] in ['0', '1', ..., '9', decimalSeparator] then
self.text := leftstr(self.text, length(self.text)-1);
end;
c'est juste un premier jet, a mon avis tu devra surement faire quelque chose pour eviter le double appel de l'evenement OnChange.
N_M_B
Messages postés94Date d'inscriptionmardi 9 mai 2006StatutMembreDernière intervention 1 mars 2008 13 nov. 2006 à 08:08
salut!
PoulpHunter> moi aussi j'utilise cette méthode mais on peut toujour faie un coller avec le deuxieme boutton de la souris alor prend en compte Bertrand_s
++
N*M*B
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_bertrand_s
Messages postés2Date d'inscriptionvendredi 10 novembre 2006StatutMembreDernière intervention13 novembre 2006 13 nov. 2006 à 13:24
Merci à tous pour vos réponses très intéressantes.
Après un paquet d'heures passée dessus j'ai même eu des réponses inespérées comme les options régionales qui m'ont faites ch... merci à toi aussi Loda ;-)
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 13 nov. 2006 à 13:38
tu as acces directement au separateur decimal grace a la variable DecimalSeparator de l'unité SysUtils, sans avoir besoin de manipuler de TFormatSettings
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 13 nov. 2006 à 15:09
tiens, j'ai bien faite de me lever ce matin, j'ai appris qqch :D
PS: j'utilise une copie du TFormatSettings du system car je modifie les format de date/heure/... . Ceci me permet de passer MON TFormatSettings aux fonctions de conversion lorsque je lit des fichiers de sauvegarde. Comme ça, mes fichiers de sauvegarde ne dépendent pas des options régionales. :)
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 20136 13 nov. 2006 à 16:09
tout a fait loda. le seul avantage du decimalseparator, c'est si tu n'as besoin que de lui. si tu veux modifier le format date/heure, ..., alors il te reste le TFormatSettings
N_M_B
Messages postés94Date d'inscriptionmardi 9 mai 2006StatutMembreDernière intervention 1 mars 2008 13 nov. 2006 à 17:52
re !
n'oubliez pas que par un clique droit sur le TEdit le popup menu par défaut nous permet de faire un coller ! personelement j'ajoute un TPopUpMenu vide( ou avec un coller sécurisé) et je l'assigne a mon TEdit (y'aurait-il un autre moyen )
N_M_B
Messages postés94Date d'inscriptionmardi 9 mai 2006StatutMembreDernière intervention 1 mars 2008 13 nov. 2006 à 18:06
désolé ! pas la paine d'ajouter un PopUpMenu il sufit de faire ceci :
procedure TForm1.Edit1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
begin
handled:= true // metre a false pour réactiver le popupmenu par défaut
end;
a+
N*M*B