zorro4243
Messages postés3Date d'inscriptionlundi 2 novembre 2009StatutMembreDernière intervention 3 novembre 2009
-
17 avril 2008 à 09:57
HAFTARIFOUAD
Messages postés256Date d'inscriptionmercredi 5 septembre 2007StatutMembreDernière intervention 6 janvier 2011
-
18 avril 2008 à 15:24
Je ne trouve pas de solution au problème suivant, simple et fréquent de surcoit !
Dans un evenement 'on KeyPress', je souhaite contrôler et surtout MODIFIER après détection d'erreur l'entrée de quatre chiffres quelconques. J'ai trouvé sur le site la possibilité suivante: simple et sympathique mais malheureusement incomplète pour mon usage.. Comment la modifier pour permettre la correction d'un ou plusieurs chiffres erronement entrés ...Débutant Delphi, je me casse les dents .......
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if ((key<'0') OR (key>'9')) then
begin
edit1.ReadOnly:=true;
ShowMessage('Corriger et entrez un chiffre');
end
else
edit1.ReadOnly:=false;
end;
Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 17 avril 2008 à 11:08
Salut,
la solution de Fouad est bonne mais incomplète ...
En effet si l'utilisateur colle du texte depuis le presse papier (par ex) ben ...
cette méthode ne sert à rien
Pour toi la meilleur solution c'est de faire comme ceci :
(tu places ce code dans le OnCreate de ta fiche)
SetWindowLongA(Edit1.Handle, GWL_STYLE, GetWindowLongA(Edit1.Handle, GWL_STYLE) or ES_NUMBER);
et c'est tout.
L'avantage est qu'il n'y a pas besoin de code supplémentaire le controle est total.
Petit plus ... si tu ajoutes un TXPManifest sur ta fiche l'utilisateur aura droit à une bulle d'information lui indiquant qu'il ne peut saisir qu'un nombre dans ce champ ... le tout avec ce simple code ... elle est pas belle la vie
HAFTARIFOUAD
Messages postés256Date d'inscriptionmercredi 5 septembre 2007StatutMembreDernière intervention 6 janvier 2011 17 avril 2008 à 18:22
Merci Mr CIREC pour le complément, voila je rajoute un autre code qui permet de bloquer l'utilisation des racourcis clavier Ctrl+C, Ctrl+V voila le code
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState) ;
begin
if ((ssCtrl in Shift) AND (Key = ord('V'))) then
begin
if Clipboard.HasFormat(CF_TEXT) then ClipBoard.Clear;
Key := #0;
end;
end;
Je pense que c'est claire, bonne chance et plein de succès tous.
zorro4243
Messages postés3Date d'inscriptionlundi 2 novembre 2009StatutMembreDernière intervention 3 novembre 2009 18 avril 2008 à 15:18
Merci fouad ! Tu as répondu parfaitement à mon problème !
Tout est nickel.... Ce qui me renverse c'est la simplicité et l'évidence de ta réponse. J'ai cherché une solution compliquée alors que.... Encore merci !
J'espére un jour être a même d'aider d'autres débutants.
Marci a cirec, mais je n'ai pas encore les capacités pour bien comprendre le code employé tels que GWL_ et autres TXPManifest.
Quels sites (ou bouquins) me conseillez vous, et fouad et cirec, pour parfaire ma compréhention.
Encore merci tous les deux
Vous n’avez pas trouvé la réponse que vous recherchez ?
HAFTARIFOUAD
Messages postés256Date d'inscriptionmercredi 5 septembre 2007StatutMembreDernière intervention 6 janvier 2011 17 avril 2008 à 10:12
Bonjour
On premier je tiens a vous souhaiter la bienvenue dans le monde de la programmation :-)
Ce que j'ai compri de votre question, c'est que vous souhaiter filtrer la saisie das un TEdit pour avoir que des integer.
voila le code:
if key in ['0'..'9',#8] then key:=key else key:=#0; // #8= la touche effacer, elle est acceptée
je pense que c'est claire, bonne chance et bon courage.