分类: Install Setup 2013-02-02 11:29 406人阅读 评论(0) 收藏 举报

编辑框

编辑框也叫文本框,是典型的窗口可视化组件,既可以用来输入文本,也可以用来显示文本,是程序设计中最常用的组件之一,可以获取用户输入的许多信息。Pascal中的编辑框由类Tedit实现,该类的定义如下:

TEdit = class(TCustomEdit)

property AutoSelect: Boolean; read write;

property AutoSize: Boolean; read write;

property BorderStyle: TBorderStyle; read write;

property CharCase: TEditCharCase; read write;

property Color: TColor; read write;

property Font: TFont; read write;

property HideSelection: Boolean; read write;

property MaxLength: Integer; read write;

property PasswordChar: Char; read write;

property ReadOnly: Boolean; read write;

property Text: String; read write;

property OnChange: TNotifyEvent; read write;

property OnClick: TNotifyEvent; read write;

property OnDblClick: TNotifyEvent; read write;

property OnKeyDown: TKeyEvent; read write;

property OnKeyPress: TKeyPressEvent; read write;

property OnKeyUp: TKeyEvent; read write;

end;

该类的层次模型如下:

下面的代码将演示创建编辑框,以及编辑框的Text属性:

[setup]

AppName=Test

AppVerName=TEST

DefaultDirName="E:\TEST"

AppVersion=1.0

[files]

Source: "F:\desktop\Inno\ipmsg.exe";Flags:dontcopy

[code]

var

myPage:TwizardPage;

myBtn:TButton;

ed1,ed2,ed3:TEdit;

procedure ClickmyBtn(Sender: TObject);

begin

ed3.Text:=ed1.Text+' '+ed2.Text;

end;

procedure InitializeWizard();

begin

myPage:=CreateCustomPage(wpWelcome, '标题:自定义页面', '描述:这是我的自定义页面');

myBtn:=TButton.Create(myPage);

myBtn.Parent:=myPage.Surface;

myBtn.Caption:='点我~';

myBtn.OnClick:=@ClickmyBtn;

ed1:=TEdit.Create(myPage);

ed1.Parent:=myPage.Surface;

ed1.Top:=myBtn.Top+30;

ed1.Width:=myBtn.Width;

ed2:=TEdit.Create(myPage);

ed2.Parent:=myPage.Surface;

ed2.Top:=ed1.Top+30;

ed2.Width:=myBtn.Width;

ed3:=TEdit.Create(myPage);

ed3.Parent:=myPage.Surface;

ed3.Top:=ed2.Top+30;

ed3.Width:=myBtn.Width;

end;

属性Text用于设置或获取文本框中的内容,注意不管是设置还是获取,参数一定必须是String的类型,运行效果如下:

如果是想实现两个数的代数运算,而不是字符串的拼接,则按钮的OnClick过程应该做如下修改:

procedure ClickmyBtn(Sender: TObject);

var

a,b:Extended;

begin

a:=StrToFloat(ed1.Text);

b:=StrToFloat(ed2.Text);

ed3.Text:=FloatToStr(a+b);

end;

StrToFloat和FloatToStr分别实现字符串转实数,实数转字符串。在第一、第二个文本框中输入数值后,点击按钮将第三个文本框中的内容设置为两数的和。下面再说说其他的属性。修改代码段如下:

[code]

var

myPage:TwizardPage;

myBtn:TButton;

ed1,ed2,ed3:TEdit;

a,b,c:String;

procedure ClickmyBtn(Sender: TObject);

begin

a:=ed1.Text;

b:=ed2.Text;

c:=a+b;

ed3.Text:=c;

end;

procedure InitializeWizard();

begin

myPage:=CreateCustomPage(wpWelcome, '标题:自定义页面', '描述:这是我的自定义页面');

myBtn:=TButton.Create(myPage);

myBtn.Parent:=myPage.Surface;

myBtn.Caption:='点我~';

myBtn.OnClick:=@ClickmyBtn;

ed1:=TEdit.Create(myPage);

ed1.Parent:=myPage.Surface;

ed1.Top:=myBtn.Top+30;

ed1.Width:=myBtn.Width;

ed1.CharCase:=ecUpperCase;{大写}

ed1.ShowHint:=True;

ed1.Hint:='字母将会变为大写';

ed2:=TEdit.Create(myPage);

ed2.Parent:=myPage.Surface;

ed2.Top:=ed1.Top+30;

ed2.Width:=myBtn.Width;

ed2.PasswordChar:='#';{密码样式}

ed3:=TEdit.Create(myPage);

ed3.Parent:=myPage.Surface;

ed3.Top:=ed2.Top+30;

ed3.Width:=myBtn.Width*2;

ed3.ReadOnly:=true;{只读}

end;

上面介绍了四个属性:CharCase将设置文本显示的格式,可以有三个值:(ecNormal, ecUpperCase, ecLowerCase,分别为正常方式,大写方式,小写方式;PasswordChar属性将输入的文本替换为制定的样式;ReadOnly属性将使得该文本框不接受用户输入;Hint和ShowHint属性是用户的鼠标停留在该文本框上时,给出相应的提示文本,注意只有在ShowHint设置为True的时候才会显示。

另外,编辑框也能对一些事件做出相应,例如单击、双击,文本内容发生变化等,实现起来和按钮的差不错,这里就不再啰嗦了。最后需要介绍的是三个处理按键的属性: OnKeyDown、OnKeyPress和OnKeyUp

这三个属性是当用户光标停留在该文本框中时,当用户按下了键盘上的某个键时,会调用该属性指定的过程,测试代码如下:

[code]

var

myPage:TwizardPage;

ed:TEdit;

procedure EditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

if (key=67) and (Shift=[ssAlt]) then

Msgbox('你按下了Alt+c',MBInformation,MB_OK);

end;

procedure InitializeWizard();

begin

myPage:=CreateCustomPage(wpWelcome, '标题:自定义页面', '描述:这是我的自定义页面');

ed:=TEdit.Create(myPage);

ed.Parent:=myPage.Surface;

ed.OnKeyDown:=@EditKeyDown;

end;

在编辑框中输入时,用户按下Alt+C组合时,将会做出响应,弹出一个消息框,这样可以对我们感兴趣的按键组合做出相应的动作,例如我们想屏蔽粘贴这项功能,则修改代码如下:

procedure EditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);

begin

if (key=86) and (Shift=[ssCtrl]) then

Msgbox('粘贴无效,请手动输入',MBInformation,MB_OK);

ed.text:='';

end;

不过这里要说明的是,这还不能屏蔽右键粘贴,只是屏蔽了Ctrl+V的方式。另外两个按键属性和这里介绍的KeyDown差不多,可对照测试一下。

Inno Setup入门(十八)——Inno Setup类参考(4)的更多相关文章

  1. Inno Setup入门(八)——有选择性的安装文件

    这主要使用[Components]段实现,一个演示的代码如下: [setup] ;全局设置,本段必须 AppName=Test AppVerName=TEST DefaultDirName=" ...

  2. Inno Setup入门(八)——有选择性的安装文件

    这主要使用[Components]段实现,一个演示的代码如下: [setup] ;全局设置,本段必须 AppName=Test AppVerName=TEST DefaultDirName=" ...

  3. (转)Inno Setup入门(八)——有选择性的安装文件

    本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250827 这主要使用[Components]段实现,一个演示的代 ...

  4. Android入门(十八)服务

    原文链接:http://www.orlion.ga/674/ 一.定义一个服务 创建一个项目ServiceDemo,然后在这个项目中新增一个名为 MyService的类,并让它继承自 Service, ...

  5. [译]Kinect for Windows SDK开发入门(十八):Kinect Interaction交互控件

    本文译自 http://dotneteers.net/blogs/vbandi/archive/2013/03/25/kinect-interactions-with-wpf-part-i-getti ...

  6. [WebGL入门]十八,利用索引缓存来画图

    注:文章译自http://wgld.org/.原作者杉本雅広(doxas),文章中假设有我的额外说明.我会加上[lufy:].另外,鄙人webgl研究还不够深入,一些专业词语,假设翻译有误,欢迎大家指 ...

  7. Inno Setup入门(一)——最简单的安装脚本

    地址:http://379910987.blog.163.com/blog/static/3352379720110238252326/ 一个最简单的安装脚本: 1.最简单的安装文件脚本: [setu ...

  8. Inno Setup入门(十六)——Inno Setup类参考(2)

    Inno Setup入门(十六)——Inno Setup类参考(2) http://379910987.blog.163.com/blog/static/33523797201112755641236 ...

  9. Inno Setup入门(十五)——Inno Setup类参考(1)

    分类: Install Setup 2013-02-02 11:27 536人阅读 评论(0) 收藏 举报 nno setup脚本能够支持许多的类,这些类使得安装程序的功能得到很大的加强,通过对这些类 ...

  10. (转)Inno Setup入门(十五)——Inno Setup类参考(1)

    本文转载自:http://blog.csdn.net/yushanddddfenghailin/article/details/17250955 nno setup脚本能够支持许多的类,这些类使得安装 ...

随机推荐

  1. 2、创建File类对象

    既然是内置类,那么我们创建对象时自然要看它封装好的构造函数咯,由下图的4中构造函数我们可知有4种办法来创建File对象 具体代码如下 public class Demo { public static ...

  2. GOPS 2016全球运维大会 • 北京站概况

    GOPS 2016全球运维大会上海站已圆满落幕,错过上海站的朋友或许会感到一些遗憾,但是不用担心,在12月16日,GOPS 2016全球运维大会 • 北京站将隆重召开,错过上海在的朋友可以赶上北京站哦 ...

  3. HDU 1562 Guess the number

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1562 Problem Description Happy new year to everybody ...

  4. Node.js:包

    概要:本篇博客主要介绍了node.js中的包 包是在模块基础上更深一步的抽象,Node.js的包类似于C/C++的库函数或者Java/.Net的类库.它将某个独立的功能封装起来,用于发布.更新.依赖管 ...

  5. 安装Python package

    下载对应的源码,往往都是.tar.gz,.zip的压缩包,解压. 打开windows的cmd,切换到对应目录 C: cd C:\xx setup.py install  

  6. 【转】Storm并行度详解

    1.Storm并行度相关的概念 Storm集群有很多节点,按照类型分为nimbus(主节点).supervisor(从节点),在conf/storm.yaml中配置了一个supervisor,有多个槽 ...

  7. AUTO_INCREMENT列在InnoDB里如何工作

    如果你为一个表指定AUTO_INCREMENT列,在数据词典里的InnoDB表句柄包含一个名为自动增长计数器的计数器,它被用在为该列赋新值.自动增长计数器仅被存储在主内存中,而不是存在磁盘上. Inn ...

  8. nefu 903 字符串去星

    字符串去星 Problem : 903 Time Limit : 1000ms Memory Limit : 65536K description 有一个字符串(长度小于100),要统计其中有多少个* ...

  9. 【笔记】Loadrunner添加OS类型为Windows的服务器(Win7)

    最近在学习Loadrunner,看到“监控Windows资源”,决定小试一把,由于没有找到合适的镜像,暂时没有搞好Windows的虚拟机,so 先用自己小试牛刀了只有,不过这样子好像难度锐减也~只要小 ...

  10. Windows下QT4.8.4编译环境的搭建(转载http://blog.csdn.net/bestgonghuibin/article/details/38933141)

    开始使用QT了,所以第一步就是把环境搭起来,这里小记一下,以免以后忘记. 1. 下载安装文件 要使用QT功能,那么必须要下载QT的源码,还必须要一个是用QT的编译环境,可以是VS2010,也可以是专用 ...