Delphi控件之---UpDown以及其与TEdit的配合使用(比如限制TEdit只能输入数字,还有Object Inspector之组件属性的介绍)
最近在开发中使用到了UpDown这个控件,但是因为之前没有使用过,所以很不熟悉,于是就编写了一个简单的demo来学习UpDown以及其结合TEdit的用法。
初步的常用功能的简介
目前(2015.08.07)只是涉及到其简单的用法,因为目前我所需要使用的就只有这些内容,系统化的使用和知识将会在以后需要的时候再补充。
目前涉及到的内容有UpDown组件与TEdit组件的配合使用、UpDown的Position属性。
寻找UpDown:
如下图,Win32下,用红色框框出来的
先看一下这个程序的运行效果图:
图1 程序启动时候的界面
图2 程序运行的效果
简单地对程序做一下说明:实现两个加数的相加操作,既可以在两个编辑框中直接输入数字,也可以通过UpDown组件来步进(步进数是1)对编辑框中的数字进行增减,然后点击按钮就会在下面显示相加的信息。
程序分析:
本例涉及到的程序使极其简单的,但是需要说明一下,因为这是一个小demo,所以我可能没注意其中组件、变量的命名规范,这是很不好的习惯,在真正的项目中是绝对禁止的,其实也应该从平时小demo的编写时候就要注意,所以再次以我的本段代码为一个反面教材!
unit Unit1; interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls; type
TForm1 = 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; var
Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject);
begin
ud1.Associate:= edt1; //在窗体创建的时候,通过将ud1的Associate属性设置为edt1,将两个组件联系在一起,就可以通过ud1对edt1中的数字进行增减了
ud2.Associate:= edt2; //作用同上
end; procedure TForm1.btn1Click(Sender: TObject);
var
res: Integer;
plus1: Integer;
plus2: Integer;
begin
plus1:= 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);
var
edt: TEdit;
str, strL, strR: string;
p: integer;
begin
// 获取当前文本内容, 注意要去掉选中部分(因为会被改写).
edt := TEdit(Sender);
str := edt.text;
if Length(edt.SelText) <> 0 then
begin
strL := 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 = '.' then
begin
p := Pos('.', edt.Text);
if p > 0 then Key := #0;
end;
//限制只能在第一位输入且只能输入一个'-'号
if Key = '-' then
begin
if 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的更多常用的属性和方法
Delphi控件之---UpDown以及其与TEdit的配合使用(比如限制TEdit只能输入数字,还有Object Inspector之组件属性的介绍)的更多相关文章
- Delphi 控件大全
delphi 控件大全(确实很全) delphi 控件查询:http://www.torry.net/ http://www.jrsoftware.org Tb97 最有名的工具条(ToolBar ...
- delphi控件属性大全-详解-简介
http://blog.csdn.net/u011096030/article/details/18716713 button 组件: CAPTION 属性 :用于在按钮上显示文本内容 Cancel ...
- delphi 控件大全(确实很全)
delphi 控件查询:http://www.torry.net/ http://www.jrsoftware.org Tb97 最有名的工具条(ToolBar)控件库,仿Office97,如TDoC ...
- 对Delphi控件作用的新理解(控件本身的源代码就是一个很强的工业级源码)
最近几天,对Delphi控件的含义有了一个新的理解.其实它不仅仅是给程序员提供功能的一个表层调用,控件本身的源代码就是一个很强的工业级源码.而且它的Main例子,往往就已经是半成品.而别的语言里没有那 ...
- Ehlib(Delphi控件) v9.2.024 D7-XE10.2 免费绿色特别版
下载地址:https://www.jb51.net/softs/579413.html#downintro2 EHLib是一个DELPHI 下的非常棒的第三方Grid控件,比DELPHI自带的强大许多 ...
- delphi 控件集
delphi 控件集: 1)RAIZE 控件包 :http://www.raize.com/devtools/rzcomps/ 被收购 Raize Components has been ac ...
- Delphi控件-复合控件【转】
复合控件复合控件是Delphi控件中非常重要的一种控件,复合控件就是将两个或两个以上的控件重新组合成一个新的控件.例如TspinEdit.TlabeledEdit.TDBNavigator等就是复合控 ...
- DELPHI控件属性事件说明
常用DELPHI控件属性事件设置说明 常用DELPHI控件属性设置说明目录TForm Class TPanel组件 TToolBar Class TToolButton Class TTimer Cl ...
- Delphi控件大全
首先来大体上为控件分一下类,以方便我们后面的讨论. 但因为控件的种类太多,所以就粗略的分为如下几个类别∶ ---界面风格类 ---Shell外观类 ---Editor类 ---Gr ...
随机推荐
- 做web开发和测试,修改hosts指定某个域名访问某个特定的IP后,如何使hosts立即生效的方法
本文转自SUN'S BLOG,原文地址:http://whosmall.com/post/143 hosts的配置方法: 在windows系统中,找到C:\windows\system32\drive ...
- chose.jquery 联动
<!doctype html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- Django基础,Day6 - 单元测试tests
在django项目app目录下,有个tests.py,我们通常可以直接在这文件中写我们的单元测试代码. test for a model 根据前面章节的操作步骤下来,在Question Model中有 ...
- juery实现贪吃蛇的游戏
今天用juery做了一个贪吃蛇的游戏,代码比较简陋,不过作为这些天学习juery的成果,非常有成就感.另外关于代码内容如有雷同不胜荣幸. 更改了下 让头和身子的颜色不一样 这样好区分些,虽然还是不怎么 ...
- Cheat sheets
- UVA - 11235 Frequent values
2007/2008 ACM International Collegiate Programming Contest University of Ulm Local Contest Problem F ...
- libvirt 网络手册(二):桥接网络
原文:Bridged Network 在一个桥接网络里面,宿主机和虚拟机共享物理网卡.每一个虚拟机可以直接绑定任意可用的IPV4或IPV6局域网地址,就像一个物理机一样.桥接给libvirt网络提供最 ...
- Maven的POM.xml配置大全
<?xml version="1.0" encoding="utf-8"?> <project xmlns="http://mave ...
- VS2013全攻略
http://blog.csdn.net/cpp12341234/article/details/45371269 挺好的,喜欢
- oracle学习笔记(二)
1. Oracle字符串操作 1.1. 字符串类型 1.1.1. CHAR和VARCHAR2类型 CHAR和VARCHAR2类型都是用来表示字符串数据类型,用来在表中存放字符串信息, 比如姓名.职业. ...