最近在开发中使用到了UpDown这个控件,但是因为之前没有使用过,所以很不熟悉,于是就编写了一个简单的demo来学习UpDown以及其结合TEdit的用法。

初步的常用功能的简介                

  目前(2015.08.07)只是涉及到其简单的用法,因为目前我所需要使用的就只有这些内容,系统化的使用和知识将会在以后需要的时候再补充。

  目前涉及到的内容有UpDown组件与TEdit组件的配合使用UpDown的Position属性

寻找UpDown:

  如下图,Win32下,用红色框框出来的

先看一下这个程序的运行效果图:

图1 程序启动时候的界面

图2 程序运行的效果

  简单地对程序做一下说明:实现两个加数的相加操作,既可以在两个编辑框中直接输入数字,也可以通过UpDown组件来步进(步进数是1)对编辑框中的数字进行增减,然后点击按钮就会在下面显示相加的信息。

程序分析:

  本例涉及到的程序使极其简单的,但是需要说明一下,因为这是一个小demo,所以我可能没注意其中组件、变量的命名规范,这是很不好的习惯,在真正的项目中是绝对禁止的,其实也应该从平时小demo的编写时候就要注意,所以再次以我的本段代码为一个反面教材!

unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ComCtrls;typeTForm1 = class(TForm)ud1: TUpDown;edt1: TEdit;lbl1: TLabel;lbl2: TLabel;lbl3: TLabel;edt2: TEdit;ud2: TUpDown;lbl4: TLabel;lbl5: TLabel;lbl6: TLabel;lbl7: TLabel;btn1: TButton;lbl8: TLabel;procedure btn1Click(Sender: TObject);procedure FormCreate(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
beginud1.Associate:= edt1;  //在窗体创建的时候,通过将ud1的Associate属性设置为edt1,将两个组件联系在一起,就可以通过ud1对edt1中的数字进行增减了ud2.Associate:= edt2;    //作用同上
end;procedure TForm1.btn1Click(Sender: TObject);
varres: Integer;plus1: Integer;plus2: Integer;
beginplus1:= StrToInt(edt1.Text);   //可以使用该方式获取编辑框中的值  //TEdit的Text属性是string类型plus2:= ud2.Position;    //因为ud2.Associate:= edt2; 所以ud2与edt2联系在一起,所以也可以使用这样的方式获取编辑框中的值    // UpDown的Position属性是SmallInt类型res:= plus1 + plus2;lbl4.Caption:= IntToStr(plus1);lbl6.Caption:= IntToStr(plus2);lbl8.Caption:= IntToStr(res);
end;end.

  代码很简单,需要说明的知识点也都在代码中通过注释说明了。

关于组件的Object Inspector的思考

  多说一句,我是通过在窗体创建的方法中显式声明了ud1.Associate:= edt1; 以及ud2与edt2的结合的,还有一种方式,以ud1和edt1为例,就是在图形界面的设计界面上选中ud1,然后去到Object Inspector这个配置界面来配置ud1 的相关属性,当然就可以配置ud1 的Associate 属性,将其设置为edt1,这样就不需要再在窗体的创建方法中通过代码来声明了。(此时既可以通过edt1的Text属性获取编辑框中的值,不过注意是string类型,也可以通过ud1的Position方法获取编辑框中的值,Position是SmallInt类型

  这里介绍了Object Inspector是为了说明,可能有时候你在看一些代码的时候,发现很多东西没有在代码中,但是运行时候好像又有效果,可能是因为其是在Object Inspector里面进行的配置,而不是在代码中进行显式的说明。

  关于Object Inspector还有另外一个例子,请参见《解决Delphi图形化界面的TEdit、TLable等组件手动拖拽固定大小,但是编译之后显示有差别的情况》

限制TEdit中只能输入数字              

  在TEdit和UpDown的配合使用中,往往需要限制只能在TEdit中输入整数,为了防止用户误操作而输入汉字或者字母,需要在代码中实现这个限制。

  这里给出限制只能在编辑框中输入数字(小数点、'-'号、数字)的方法,具体的比如限制只能输入正整数、限制只能输入整数……方法可以参考实现。

procedure Tform1.Edit1KeyPress(Sender: TObject; var Key: Char);
varedt: TEdit;str, strL, strR: string;p: integer;
begin// 获取当前文本内容, 注意要去掉选中部分(因为会被改写).edt := TEdit(Sender);str := edt.text;if Length(edt.SelText) <> 0 thenbeginstrL := LeftStr(edt.text, edt.SelStart);strR := RightStr(edt.text, Length(edt.text) - edt.SelStart - edt.SelLength);str := strL + strR;end;// 限制输入数字/小数点/退格键if not (Key in [#8, #13, #127, '.', '-', '0'..'9']) then Key := #0;//限制只能输入一个小数点if Key = '.' thenbeginp := Pos('.', edt.Text);if p > 0 then Key := #0;end;//限制只能在第一位输入且只能输入一个'-'号if Key = '-' thenbeginif edt.SelStart > 0 then Key := #0;p := Pos('-', edt.Text);if p > 0 then Key := #0;end;
end;//要uses StrUtils单元
如果程序里有很多的TEdit要做此限制,当然不必给每个控件写代码,把事件指定到同一个过程就行了。

  注意其中的Tform1.Edit1KeyPress方法不是直接你在代码编辑器中声明就可以的,需要通过该编辑框组件的Object Inspector里面,找到Events->OnKeyPress这个事件,如下图

  然后双击这个事件,就会在代码编辑器中出现该方法的声明,然后就可以进行编辑了,然后再看编辑框组件的Object Inspector里面的OnKeyPress事件,已经有方法了,如下图:

  这也是很多其他组件在编写组件的事件时使用的方法。

介绍UpDown的更多常用的属性和方法        

转载于:https://www.cnblogs.com/xumenger/p/4710133.html

Delphi控件之---UpDown以及其与TEdit的配合使用(比如限制TEdit只能输入数字,还有Object Inspector之组件属性的介绍)...相关推荐

  1. 计算机等级delphi取消,计算机二级DELPHI控件:DELPHI过滤记录的实现方法

    所谓过滤就是从表中选取满足特定条件的部分记录.过滤记录首先要通过Filter.属性设置过滤条件,然后将Filtered属性设置为True,即可从数据集组件连接的表中过滤出满足条件的记录. 1.Filt ...

  2. delphi 控件大全(确实很全)

    delphi 控件查询:Torry's Delphi Pages http://www.jrsoftware.org Tb97 最有名的工具条(ToolBar)控件库,仿Office97,如TDoCk ...

  3. Delphi控件-复合控件

    复合控件 复合控件是Delphi控件中非常重要的一种控件,复合控件就是将两个或两个以上的控件重新组合成一个新的控件.例如TspinEdit.TlabeledEdit.TDBNavigator等就是复合 ...

  4. delphi 控件大全

    delphi 控件查询:http://www.torry.net/ http://www.jrsoftware.org Tb97 最有名的工具条(ToolBar)控件库,仿Office97,如TDoC ...

  5. delphi控件使用

    Standard页 1-      Tlistbox控件 重要属性items.* 举例,界面设计如下左,执行结果如下右: 代码为 procedure TForm1.Button1Click(Sende ...

  6. 如何隐藏TPageControl Delphi控件的选项卡

    The TPageControl Delphi control displays a set of pages used to make a multiple-page dialog box. Eac ...

  7. Delphi 控件开发步骤

    delphi 控件开发步骤 Delphi控件开发步骤 1.使用Delphi IDE的 Component -> New Component 菜单 2.按照向导逐步完成 3.控件工程文件 4.控件 ...

  8. Delphi控件开发浅入深出(一)

    有人说过"不会开发控件的Delphi程序员不是真正的程序员".Delphi正是由于高度的可扩展性和大量的第三方控件的支持才能吸引无数程序员挑剔的目光.即使是由于工作需要使用其他开发 ...

  9. 【WinForm】设置控件里面的所有TextBox只能输入数字

    设置控件里面的所有TextBox只能输入数字 回顾 [WinForm]TextBox只能输入数字 只能输入整数 private static void tb_KeyPress(object sende ...

最新文章

  1. 深度学习时间序列预测:GRU算法构建多变量时间序列预测模型+代码实战
  2. 双关节机械臂+机械爪运动控制
  3. 2.内核异常处理流程
  4. tomcat6 优化初步
  5. Shell脚本中字符串的一些常用操作
  6. 服务器按ctrl alt delete没有用_用完这些快捷键,我再也回不去了(Win系统篇)
  7. C#通过COM组件操作IE浏览器(三):了解IHTMLDocument2
  8. 问题一:CodeBlocks环境搭建及创建第一个C++程序
  9. C#总结项目《影院售票系统》编写总结一
  10. python 自动控制鼠标移动脚本
  11. AutoCAD二次开发1-环境配置
  12. Matlab之linspace函数
  13. 花瓣网爬取美女图片 每次20张
  14. 软件推荐--Files2Folder
  15. 数据加密-国密SM2对数据进行加解密
  16. 从飞猪智能酒店到优酷视频,探索阿里智能研发协同流程
  17. VMware Workstation虚拟机装Win7详细高清图文教程
  18. 【读书笔记】之《月亮与六便士》
  19. 自己也可以开论坛了,免费的Discuz论坛:www.5d6d.com
  20. web前端面试题之http篇

热门文章

  1. 品牌网络推广方案浅析在编写文章标题时都有什么技巧?
  2. 网站优化有几个优化因素值得引起注意
  3. 制作精美的网站首页模板应该如何操作?
  4. 计算机学机械制图吗,机械制图与计算机绘图(少学时·任务驱动模式)
  5. shutdown thread.java_ShutdownHook- Java 优雅停机解决方案
  6. c++精确到小数点后两位_高考试卷的小数点是怎么算入总分的?
  7. pythongps聚类_python实现K聚类算法
  8. 放弃鼠标,提高效率——像用Vim一样使用FF
  9. 开发日记-20190808 随便聊聊
  10. 【C/C++应用实例】基于线性结构的1KB内存IC存储模拟展示(C/C++)