0/5 (1 avis)
Snippet vu 3 888 fois - Téléchargée 21 fois
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.
20 déc. 2007 à 09:49
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;
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.