delphi Text,combox 输入框的统一验证

防止用户误输入是软件开发的一项必不可少的工作,除才之外,还要为用户的使用提供最大方便。当然,我们可以利用或开发新的组件,以完成这些功 能。但是,在团队开发中,每个成员都用自己认为不错的组件开发自己所承担的模块,会给软件的后期维护带来麻烦。交工的时候,项目负责人可不买你的帐。如果 你用函数调用来完成这些功能,老盖也管不着。下面就是针对常用delphi组件的限制用户输入函数。
(一)TEdit、TDBEdit、TComboBox、TDBComboBox的输入
分三种类型限制:
(1)任意输入
(2)整数输入
(3)浮点数输入
限制的项目如下:
(1)整数输入只能输入数字0-9、+、-
(2)浮点输入只能输入数字0-9、+、-、.
(3)+和-只能有其一,并且只能出现在最前面
(4).只能有一个
(5)限制小数位数
函数如下:

procedure MxFormatKeyPress(Text:string; SelStart,SelLength:integer;
                           var Key:Char; EditType:integer; Digits:integer);
begin
{--------------------------------------------过滤字符--------------------------}
  {ESC/BackSpace键 或 任意输入时退出}
  if (Key= #27) or (Key= #8) or (EditType= 1) then exit;

  if EditType= 2 then
     if not (Key in [‘0‘..‘9‘,‘+‘,‘-‘]) then
     begin
       Key:=#0;
       Exit;
     end;

  if EditType= 3 then
     if not (Key in [‘0‘..‘9‘,‘+‘,‘-‘,‘.‘]) then
     begin
       Key:=#0;
       Exit;
     end;
{--------------------------------------------控制+- ---------------------------}
  {+-只能在第一个位置}
  {1、存在
   2、不存在
   3、选择
   4、不选择}
  if (Key = ‘-‘) or (Key = ‘+‘) then
  begin
    if ((Pos(‘-‘,Text) > 0) or (Pos(‘+‘,Text) > 0)) and (SelLength= 0) then
       Key:= #0;
    if SelStart > 0 then Key:= #0;
  end;
{------------------------------------------------------------------------------}
  {控制.}
  if (Key = ‘.‘) and (EditType=3) then
  begin
    if (Pos(‘.‘,Text) > 0) and ( (Pos(‘.‘,Text)< SelStart)or(Pos(‘.‘,Text) > (Selstart+SelLength)) ) then
       Key:= #0;
    if SelStart = 0 then Key:= #0;
  end;
{------------------------------------------------------------------------------}
//验证小数 位置
  if (Digits>0) and (SelStart+SelLength > 0) and (EditType=3) then
     if (pos(‘.‘,Text )>0 ) and (SelStart>=pos(‘.‘,Text)) then
        if length(Text)-pos(‘.‘,Text )>=Digits then
           Key:=#0;
end;

此函数在所限制组件的OnKeyPress事件中调用。Key即为OnKeyPress携带的Key:Char参数;EditType为限制的类 型:1-任意输入;2-整数输入;3-浮点输入;Digits为浮点数输入时小数的位数,如果是零,则可输入任意位数。另外,此函数只适用于有Text、 SelStart、SelLength等属性的TWinControl类的派生类。

具体限制各组件的二级函数如下:

限制TEdit、TDBEdit:
procedure MxFormatEditKeyPress(Edit:TCustomEdit;var Key:Char;EditType:integer;
        Digits:integer);
begin
  MxFormatKeyPress(Edit.Text,Edit.SelStart,Edit.SelLength,Key,EditType,Digits);
end;

限制TComboBox:
procedure MxFormatComboKeyPress(Combo:TComboBox;var Key:Char;EditType:integer;
        Digits:integer);
begin
  MxFormatKeyPress(Combo.Text,Combo.SelStart,Combo.SelLength,Key,EditType,Digits);
end;

时间: 2024-10-06 17:16:04

delphi Text,combox 输入框的统一验证的相关文章

angular 输入框实现自定义验证

此插件使用angular.js.JQuery实现.(jQuery的引入需在angular 之前) 用户可以 在输入框输入数据后验证 必填项.整数型.浮点型验证. 如果在form 里面的输入框验证,可以点击 提交按钮后,实现 必填项验证. 效果图如下: (1)验证未通过时,背景标红等样式为 input.ng-invalid, select.ng-invalid { background-color: #ee82ee !important; border: 1px solid #CCC; } .qt

easyui取消表单时验证,提交时统一验证

1.设置表单不验证 <form id="ff" class="easyui-form" method="post" data-options="novalidate:true"></form> 2.表单提交时统一验证$('#ff').form('submit',{                onSubmit:function(){                    return $(this).

CSS W3C统一验证工具

CssStats 是一个在线的 CSS 代码分析工具  网址是: http://www.cssstats.com/ 如果你想要更全面的,这个神奇,你值得拥有: W3C 统一验证工具: http://validator.w3.org/unicorn/ ☆☆☆☆☆ 因为它可以检测本地文件哦!! 原文地址:https://www.cnblogs.com/superjishere/p/11714868.html

Spring security 集成ldap服务,实现统一验证

<span style="font-size:18px;">先说一下Spring security 是基于spring的一个强大的安全验证模块,它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能.</span> LDAP是轻量目录访问协议,基

MVC中的统一验证机制

using MvcApplication2.Models;using System;using System.Collections.Generic;using System.ComponentModel;using System.ComponentModel.DataAnnotations;using System.ComponentModel.DataAnnotations.Schema;using System.Data.Entity;using System.Globalization;

asp.net MVC 中 Session统一验证的方法

验证登录状态的方法有:1  进程外Session   2 方法过滤器(建一个类继承ActionFilterAttribute)然后给需要验证的方法或控制器加特性标签 3 :新建一个BaseController  继承Controller   把后面需要验证的控制器都改成继承BaseController   而不是Controller [csharp] view plain copy print? namespace Core.ProjectOA.WebApp.Controllers { publ

完整的 dataType=text/plain jquery ajax 登录验证

Html: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8" /> 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 6 <title>校园通销售管理系统-用户登录</title> 7 <link

JavaScript基础 得到 在表格中的 text文本输入框内的 字符串

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"

JavaScript基础 表单内的text文本输入框 获得焦点onfocus 失去焦点onblur

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"