Controle saisie (edit) [Résolu]

Messages postés
3
Date d'inscription
lundi 2 novembre 2009
Dernière intervention
3 novembre 2009
- 17 avril 2008 à 09:57 - Dernière réponse :
Messages postés
298
Date d'inscription
mercredi 5 septembre 2007
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.
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
298
Date d'inscription
mercredi 5 septembre 2007
Dernière intervention
6 janvier 2011
- 17 avril 2008 à 10:13
3
Merci
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;

Merci HAFTARIFOUAD 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de HAFTARIFOUAD
Meilleure réponse
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
- 17 avril 2008 à 11:08
3
Merci
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="" />

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de Cirec
Meilleure réponse
Messages postés
298
Date d'inscription
mercredi 5 septembre 2007
Dernière intervention
6 janvier 2011
- 17 avril 2008 à 18:22
3
Merci
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.

Merci HAFTARIFOUAD 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de HAFTARIFOUAD
Meilleure réponse
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
- 18 avril 2008 à 00:28
3
Merci
Oui ça fonctionne sans la petite erreur 

if ((ssCtrl in Shift) AND (Key = ord('V'))) then
  begin
    if Clipboard.HasFormat(CF_TEXT) then ClipBoard.Clear;
    Key := 0 ;
  end;

Mais si c'est pour controler le tout il y avait ceci :
http://www.delphifr.com/codes/CONTROLER-COPIER-COLLER-DANS-TEDIT_40313.aspx

Avantage:
Le controle du presse papier (ClipBoard) est totale ... on peut interdir ou non
soit le copier soit le coller soit les deux
on peut controler ce qui va être coller (le modifier juste avant) sans modifier le contenu du press papier.

et encore plein d'autres choses

 
@+
Cirec

<hr siz ="" />

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de Cirec
Messages postés
3
Date d'inscription
lundi 2 novembre 2009
Dernière intervention
3 novembre 2009
- 18 avril 2008 à 15:18
0
Merci
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
Commenter la réponse de zorro4243
Messages postés
298
Date d'inscription
mercredi 5 septembre 2007
Dernière intervention
6 janvier 2011
- 18 avril 2008 à 15:24
-1
Merci
Merci à vous aussi Mr: ZORRO4243, et bonne chance.
Commenter la réponse de HAFTARIFOUAD
Messages postés
298
Date d'inscription
mercredi 5 septembre 2007
Dernière intervention
6 janvier 2011
- 17 avril 2008 à 10:12
-2
Merci
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.
Commenter la réponse de HAFTARIFOUAD

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.