- 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.