begin process at 2008 08 30 01:24:52
1 233 969 membres
8 nouveaux aujourd'hui
14 294 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

LIBRAIRIE DE CONTROLE (FILTRE) DE TOUCHE DANS UN TEDIT


Information sur la source

Description

Ceci un librairie ou dll qui controle les entrees des utilisateurs dans un TEdit.Limitation des entrees a des chiffres entiers ou avec virgules.L'edition acceptant le retour de chariot.
Vous appelerez les fonction par les evenements de Tedit OnKeyPress
qui accepte une variable Char.
Exemple:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
IntKey(Key);
end;

Pour importer les fonctions dans le programme,exemple:

var
  Form1: TForm;
  IntKey:procedure(var m:Char);stdcall;
  RealKey:procedure(var m:Char);stdcall;

Source

  • library dimbfunc;
  • { Dlls de controle de touche
  • entree de chiffre entier ou decimal par exemple
  • dans une boite d'edition.Cet exemple est specifique
  • pour la platforme Windows }
  • uses
  • Forms,SysUtils,Windows,Dialogs,Classes;
  • {$R *.res}
  • var w:Byte;
  • function SeparDec:Byte;
  • var c:Char;
  • TF:TFormatSettings;
  • InfoLocal:Integer;
  • begin
  • InfoLocal:=Languages.LocaleID[0];
  • GetLocaleFormatSettings(InfoLocal,TF);
  • c:=TF.DecimalSeparator;
  • if c=','then Result:=1 else Result:=0;
  • {recuperation de separateur decimal
  • pour un point ou un virgule.}
  • end;
  • procedure RealKey(var m:Char);stdcall;export;
  • var n:Integer;
  • {touches numériques avec virgule(réel)
  • ou point(si anglais)}
  • begin
  • n:=Ord(m);
  • if w=1 then begin
  • if (n>=48)and (n<=57)then m:=m
  • else if (n=Ord(VK_BACK))or(n=44) then m:=m else m:=#0;
  • end else begin
  • if (n>=48)and (n<=57)then m:=m
  • else if (n=Ord(VK_BACK))or(n=46) then m:=m else m:=#0;
  • end;
  • end;
  • procedure IntKey(var m:Char);stdcall;export;
  • var n:Integer;
  • begin
  • //nombre entier de 0 a 9
  • n:=Ord(m);
  • if (n>=48)and (n<=57)then m:=m
  • else if n=Ord(VK_BACK) then m:=m else m:=#0;
  • end;
  • exports IntKey,RealKey,EntKey;
  • begin
  • w:=SeparDec;
  • end.
library dimbfunc;
{ Dlls de controle de touche
entree de chiffre entier ou decimal par exemple
dans une boite d'edition.Cet exemple est specifique
pour la platforme Windows  }

uses
  Forms,SysUtils,Windows,Dialogs,Classes;

{$R *.res}

var w:Byte;

function SeparDec:Byte;
var c:Char;
    TF:TFormatSettings;
    InfoLocal:Integer;
begin
 InfoLocal:=Languages.LocaleID[0];
 GetLocaleFormatSettings(InfoLocal,TF);
 c:=TF.DecimalSeparator;
 if c=','then Result:=1 else Result:=0;
 {recuperation de separateur decimal
 pour un point ou un virgule.}
end;

procedure RealKey(var m:Char);stdcall;export;
var n:Integer;
{touches numériques avec virgule(réel)
ou point(si anglais)}
begin
 n:=Ord(m);
 if w=1 then begin
  if (n>=48)and (n<=57)then m:=m
  else if (n=Ord(VK_BACK))or(n=44) then m:=m else m:=#0;
 end else begin
  if (n>=48)and (n<=57)then m:=m
  else if (n=Ord(VK_BACK))or(n=46) then m:=m else m:=#0;
  end;
end;

procedure IntKey(var m:Char);stdcall;export;
var n:Integer;
begin
//nombre entier de 0 a 9
 n:=Ord(m);
 if (n>=48)and (n<=57)then m:=m
 else if n=Ord(VK_BACK) then m:=m else m:=#0;
end;

exports IntKey,RealKey,EntKey;

begin
 w:=SeparDec;
end.

Conclusion

Comment compter si les sepateurs decimals sont en plus
et que le chiffre ne commence pas par un separateur decimal?
  • signaler à un administrateur
    Commentaire de f0xi le 20/12/2007 09:49:46 administrateur CS

    procedure RealKey(var m:Char);stdcall;export;
    begin
      if not (m in ['0'..'9',decimalseparator,#8]) then
        m := #0;
    end;

    procedure IntKey(var m:Char);stdcall;export;
    begin
      if not (m in ['0'..'9',#8]) then
        m := #0;
    end;

Ajouter un commentaire

Discussions en rapport avec ce code source

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS