分类: 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差不多,可对照测试一下。

转载于:https://www.cnblogs.com/atuo/p/4777692.html

Inno Setup入门(十八)——Inno Setup类参考(4)相关推荐

  1. python字符串操作入门十八讲——合集一

    字符串操作十八讲合集 导读

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

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

  3. Android开发笔记(四十八)Thread类实现多线程

    Thread概述 Thread类是真正的线程,查看源码可见Thread也实现了Runnable接口,但它内部有创建新的工作线程,所以Thread对象运行在与主线程不一样的分线程上. 因为Thread对 ...

  4. Android开发笔记(三十八)列表类视图

    AdapterView AdapterView顾名思义是适配器视图,Spinner.ListView和GridView都间接继承自AdapterView,这三个视图都存在多个元素并排展示的情况,所以需 ...

  5. 爪哇国新游记之十八----泛型栈类

    import java.lang.reflect.Array;/*** 泛型栈** @param <T>*/ public class Stack<T>{private Cla ...

  6. CarSim仿真快速入门(十八)-转向系统(1)

    What is Steer什么是转向? 转向是指车辆的坐标系中的车轮的角度方位的一个方面(其它的是外倾角或倾斜和旋转). 具体地说,转向是从车辆纵轴(在CarSim中为X轴)到由车轮的平面与车辆水平面 ...

  7. 【零基础学Java】—自定义异常(四十八)

    [零基础学Java]-自定义异常(四十八) 自定义异常类:java提供的异常类,不够我们使用,需要自己定义一个异常类 格式: public class XXXException extends Exc ...

  8. JavaSE基础知识(十八)--Java多态之向上转型(多态初步)

    Java SE 是什么,包括哪些内容(十八)? 本文内容参考自Java8标准 再次感谢Java编程思想对本文的启发! 开篇一句很重要的话:在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种 ...

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

    Inno Setup入门(十六)--Inno Setup类参考(2) 这里将接着在前面的基础上介绍如何在自定义页面上添加按钮.按钮属于Tbutton类,该类继承自TbuttonControl,类定义如 ...

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

    Inno Setup入门(十五)--Inno Setup类参考(1) nno setup脚本能够支持许多的类,这些类使得安装程序的功能得到很大的加强,通过对这些类的使用,将会创建出许多让人惊奇的安装程 ...

最新文章

  1. 在微信小程序的JS脚本中使用Promise来优化函数处理
  2. 太多选择——企业如何选择合适的BI工具?
  3. linux 切换用户_Linux 用户态切换到内核态的 3 种方式
  4. Activity (项目实战:选择宝宝装备-UsersRegister)【Intent打开Activity、数据传递-回传、更新进度条】
  5. 用JS创建一个XML文件
  6. 微信messageutil.java_java微信公众平台开发回复文本消息
  7. linux 永久添加路由表,Linux 添加永久静态路由的方法
  8. Struts2之OGNL表达式与值栈对象及常用标签的使用
  9. 如何使用.NET清除IE的缓存(Temporary Internet Files)
  10. python图像坐标系_世界坐标系、相机坐标系和图像坐标系的转换(Python)
  11. 入门HTML之表格入门基本属性
  12. 关于互联网之技术总监工作的职责职能比较好的文章收集
  13. One Piece Introduction
  14. 根下有长长的白色根须
  15. Ubuntu 18.04 LTS上编译安装BCC
  16. 凸显文化+科技融合创新,第九届漫博会VR AR技术应用强势来袭
  17. C4996:'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead.
  18. 一个承载无数悲痛的网站
  19. 自动化运维平台搭建(一)
  20. 【云原生】Prometheus+Grafana on K8s 环境部署

热门文章

  1. 接收不到其他机器发来的报文_大厂真实案例:线上四台机器同一时间全部 OOM......
  2. android wifi驱动_OTT盒子WiFi方案首选:博通2T2R WiFi模块
  3. P1020 导弹拦截(LIS)
  4. 验证整数 Double 转 int 两种写法
  5. 找新朋友(欧拉函数)
  6. 启动Nginx 出现 nginx: [emerg] unknown directive 锘?user 错误
  7. 关于数据库的备份和某个表的数据备份的相关步骤介绍
  8. android开发------Activity生命周期
  9. CTime,Systemtime的比较还有转换成日期格式。
  10. JAVA设计模式之装饰模式