有关EIDT输入数字的控件

2008-02-23 07:33:23来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

分  类:编辑框与文本框
语  种:简体中文
编辑器:Delphi7
平  台:Win9x,Win2k/XP/NT,Win2003
作品源代码: 本地下载
软件或演示: -
代码大小: 5.3K
软件大小: -


在做数据库程序的是时候,经常不希望使用DBEDIT,所以做的时候一般使用TEDIT控件,但是他对数字的输入和控制,我们经常要用到,DELPHI本身也没有提供。

我在国外网上找到一个Tnkedit控件,控制只有FLOAT输入。他本身有源代码,
问题是,他有一个缺点,输入不能控制小数为数,如果在输入的时候,末尾是小数点,他就会许可。

本人做了修改,输入控制小数位数,如果输入小数为数不够,就用‘0'补,代码很简单,在DELPHI7,WIN2K测试过没有问题,我拿出来给大家分享,因为在DELPHI的编程中,我也在享受你们给我的帮助。

感谢DELPHI盒子能让我下载这么多好的资料、控件及原代码,下面是全部代码:

unit NkEdit;

interface

uses
Windows, Messages, Graphics, Forms, Dialogs,
SysUtils, Classes, Controls, StdCtrls;

type
TnkEdit = class(TEdit)
private
{ Private declarations }
FNumb: single;
Fmydec:Integer;
function GetNumb: single;
procedure SetNumb(value:single);
function Getmydec:integer;
procedure Setmydec(value:integer);
protected
{ Protected declarations }
procedure KeyPress(var Key: Char); override;
procedure doExit;override;
public
{ Public declarations }
published
{ Published declarations }
constructor Create(AOwner:TComponent); override;
property Numb : single
read GetNumb
write SetNumb;
property Mydec:integer read Getmydec write Setmydec;
end;

procedure ReGISter;

implementation

procedure Register;
begin
RegisterComponents('Samples', [TnkEdit]);
end;

// Component constructor
constructor TnkEdit.Create(AOwner:TComponent);
begin
// Don't forget to call the ancestors' concstructor
inherited Create(AOwner);
Fmydec:=2;
end;

Function Tnkedit.Getmydec:integer;
begin
result:=Fmydec;
end;

function TnkEdit.GetNumb:single;
begin
try
Result:=StrToFloat(text);
except
on EConvertError do
begin
Result:=0;
text:=';
end;
end;
end;

procedure Tnkedit.SetmyDEC(Value:integer);
begin
if value >0 then
Fmydec:=Value
else
Fmydec:=2;
end;

// Procedure to recording into FNumb
procedure TnkEdit.SetNumb(value:single);
begin
FNumb:=Value;
Text:=FloatToStr(value);
end;

// Procedure for working with KeyPress event
procedure TnkEdit.KeyPress(var key:char);
begin
case key of
'0'.. '9': if (Pos('.',text)<>0)and(Fmydec=Length(text)-Pos(DecimalSeparator,text)) then key:=#0;
'-': if Length(text)<>0 then key:=#0;
#8, #13:;
else
if not ((key = DecimalSeparator) and (Pos(DecimalSeparator,text)=0))
then key:= #0;
end;
inherited KeyPress(key);
end;

procedure Tnkedit.doExit;
var i:integer;
begin
//输入时没有输小数部分
if pos('.',text)=0 then
begin
text:=text '.';
end;
// 输入时末尾是.
if pos('.',text)=length(text) then
begin
for i:=1 to Fmydec do
begin
text:=text '0';
end;
end;
//输入小数为数不够
if Fmydec>(length(text)-pos('.',text)) then
begin
for i:=length(text)-pos('.',text) to Fmydec do
begin
text:=text '0';
end;
end;
inherited doExit;
end;

end.

上一篇: XSpaceMutiSelectComboBox v1.00 (下拉多选框)
下一篇: XsImageEffect v1.00.321 (图像处理控件)

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:FastReport v3.07 汉化文件

下一篇:TrayIcon 系统托盘图标控件