编辑框也叫文本框,是典型的窗口可视化组件,既可以用来输入文本,也可以用来显示文本,是程序设计中最常用的组件之一,可以获取用户输入的许多信息。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支持以下函数和过程。 function InitializeSetup(): Boolean; 该函数在安装程序初始化时调用,返回False 将中断安装,True则继续安装,测试代码如下: function InitializeSetup(): Boolean; begin ...
很好的安装程序打包软件innoSetup的入门教程。
Inno Setup是一个为Microsoft Windows应用程序创建安装程序的工具。innoextract允许在非Windows系统下提取此类安装程序,而无需使用wine运行实际的安装程序。innoextract 目前支持由 Inno Setup 1.2.10 到 6.2.1 ...
innosetup安装界面美化: 解压压缩包中的 Inno Setup 5.5.zip,运行Inno Setup 5.5\Inno Setup 5\Compil32.exe,右上角可以改变语言。 打开build.iss文件,一些自定义字段请按需修改,点击Inno Setup工具栏中的 ...
超详细系统讲解Inno安装包制作的全过程
Inno Setup 是一款免费的安装包制作软件,操作简单、功能稳定,能够快速制作出标准Windows风格的安装界面,足以完成一般安装任务。使用Inno Setup打包可执行的exe软件,可在任何电脑中运行。
使用inno setup将python exe制作安装包详细教程(csdn)————程序
可解加密的inno setup安装程序,可解加密的inno setup安装程序
Inno Setup 打包软件中文教程
Inno setup是一款简便安装包工具,支持pascal脚本,几分钟就能生成标准Windows安装包。资源包括加密dll以及中文语言包
InnoSetup 多安装目录
inno setup 入门学习的官方demo+网上案例+自己的案例
InnoSetup 获取本机IP地址的方法
inno setup 中文语言包,放在安装文件夹的languages文件夹下。 [Languages] Name: "chinese"; MessagesFile: "compiler:Languages\Chinese.isl
Inno Setup + 各国的语言包
Inno Setup是一款免费的安装程序制作工具,用于创建Windows平台下的安装程序。它具有易于使用、功能强大、灵活性高等特点,是Windows安装程序制作的首选工具之一。 Inno Setup使用Pascal脚本语言编写,因此对于...
自己替换app目录下的...注意:必须要用inno setup增强版封装,该资源包包含对.net FormWork 4 的封装。{code} 文件夹下的 Code.iss 是界面代码,version.h 是配置文件 可以在里面修改应用名称,公司 、版本号等信息。
innosetup安装界面美化、卸载界面美化资源文件包,附带psd文件,脚本文件;可灵活diy;注:图片的尺寸不可更改,更改的话iss文件也需要做处理!
用inno setup进行打包安装的汉化文件,把 chinese.isl放到安装目录下的语言包里
InnoSetup 简体中文语言文件ChineseSimplified.isl