Controle saisie (edit)

Résolu
zorro4243 Messages postés 3 Date d'inscription lundi 2 novembre 2009 Statut Membre Dernière intervention 3 novembre 2009 - 17 avril 2008 à 09:57
HAFTARIFOUAD Messages postés 256 Date d'inscription mercredi 5 septembre 2007 Statut Membre Derniè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;

Merci d'avance pour vos réponses.

6 réponses

HAFTARIFOUAD Messages postés 256 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 6 janvier 2011
17 avril 2008 à 10:13
Voila je vous rajoute ce code, il a la même utilité que l'autre;


if not (key in ['0'..'9',#8]) then key:=#0;
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
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

 
@+
Cirec

<hr siz="" />
3
HAFTARIFOUAD Messages postés 256 Date d'inscription mercredi 5 septembre 2007 Statut Membre Derniè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.
3
zorro4243 Messages postés 3 Date d'inscription lundi 2 novembre 2009 Statut Membre Derniè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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
HAFTARIFOUAD Messages postés 256 Date d'inscription mercredi 5 septembre 2007 Statut Membre Dernière intervention 6 janvier 2011
18 avril 2008 à 15:24
Merci à vous aussi Mr: ZORRO4243, et bonne chance.
-1
HAFTARIFOUAD Messages postés 256 Date d'inscription mercredi 5 septembre 2007 Statut Membre Derniè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.
-2
Rejoignez-nous