捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  粤ICP备10103342号-1 DELPHI盒子 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 盒子检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
有关EIDT输入数字的控件
关键字:TnkEdit 数字 FLOAT 输入
来 自:原创
平 台:Win9x,Win2k/XP/NT,Win2003 下载所需:0 火柴
深浅度:初级 完成时间:2005/1/9
发布者:nbadjack 发布时间:2005/1/9
编辑器:DELPHI7 语  种:简体中文
分 类:编辑框与文本框 下载浏览:653/10570
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
无图片
在做数据库程序的是时候,经常不希望使用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.
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
没有相关文章
相关评论
共有评论10条
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 技术支持:深圳市麟瑞科技有限公司 1999-2024 V4.01 粤ICP备10103342号-1 更新RSS列表