大家好,又见面了,我是你们的朋友全栈君。
Note 以后将用两种方式提及组件,以组件的名称或定义组件的VCL类的名称。可以说“Label组件用于……”或说“TLabel用于……”,这两种方式谈到的是同一组件。
Delphi共有5个编辑控件组件,Edit、Memo、MaskEdit、RichEdit(该控件不是标准Windows控件)和SpinEdit(数字编辑框),在此讨论因为它与其他编辑控件有许多相同的特点。
Edit组件封装基本的单行编辑控件,这个组件没有Align和Alignment属性,它没有Alignment属性是因为单行编辑控件中的文本只能左对齐;Edit组件没有Align属性是因为它不能也不应该扩充到充满窗口的用户区域。
TEdit对象从TCustomEdit对象继承而来,继承关系如下:
CustomEdit对象的主要属性
重要的方法:
Tip 如果需要编辑组件中的文本右对齐或居中,使用Memo组件,但把它的高度做成标准Edit组件的高度,然后需要时设置Alignment属性。
Note 只要可能就保持窗体时标准的,尽管可以把Edit组件做成喜欢的那么高,如果高度超出标准Windows编辑控件的高度(对用户来说看起来像多行编辑控件),会使用户糊涂。
MaskEdit是一个“智能”的Edit框,我们可以使用MaskEdit组件来创建有效的格式化的数据录入域,它限制用户在所定义的位置输入要求输入的符号。例如,一个电话号码输入框,它要求操作人员按已定义的格式输入若干位数字的号码。
TMaskEdit是从TCustomMaskEdit继承下来的,继承关系如下:
在Object Inspector中双击EditMask属性,将会弹出“Input Mask Editor”对话框,此对话框能从预定义过滤器中选择一个或者自己建立一个,如下:
左上方的“Input Mask”编辑框用于输入掩码规则,我们从该编辑框中输入的规则“!\(999\)0000-00000000;1;_”可以看出,规则分为三个部分,用“;”分隔,不同部分用不同颜色区分:
例如采用这样的掩码“!\(999\)0000-00000000;1;_”,就可以控制用户在掩码编辑框中输入形同“(086)0311-83034220”这样的电话号码格式。具体怎么实现,只要利用个格式符含义表加以对照,相信很快就能掌握了。
用来定义掩码格式的特殊字符 ! 清除数据末尾的空格,无“!”符号表示数据后的空格将被保留,该字符只能作为掩码格式的第一位 > 出现在“>”字符之后的字符都会变成大写,直到出现“<”格式符 < 出现在“<”字符之后的字符都会变成小写,直到出现“>”格式符 <> 不进行大小写检查,数据直接以用户输入的大小写形式出现 \ 在该格式符之后出现的任何格式符都将被作为普通字符对待 L 该位置必须输入字母 l(小写字母L) 该位置可以用一个字母填充,但不是必须的,可以移动光标跳过 A 该位置必须输入字母或数字 a 该位置可以用一个字母或数字填充,但不是必须的,可以移动光标跳过 C 该位置可以输入任意字符 c 该位置可以输入任意字符,不是必须的 0(数字0) 该位置必须有一个数字 9 只能输入数字,但不是必须的 # 该位置可以输入一个数字或正负号,不是必须的 : 该字符用来表示时间时分分割小时、分钟和秒,如果在控制面板中设置的时间分割符与该格式不同,将会采用该格式。 / 该字符用来表示日期时分分割月、日和年,如果在控制面板中设置的日期分割符与该格式不同,将会采用该格式。 _ 该字符自动在输入字串中产生一位空格,当用户输入字符时,光标会跳过该位置 ; 该字符用来分割掩码规则的三个部分
在“Input Mask Editor”对话框中,还有其他的几个选项:
Delphi中DEM格式文件内容如下:
Phone | 4155551212 | !\(999\)000-0000;1;_
Extension | 15450 | !99999;1;_
Social Security | 555555555 | 000\-00\-0000;1;_
Short Zip Code | 90504 | 00000;1;_
Long Zip Code | 905040000 | 00000\-9999;1;_
Date | 062794 | !99/99/00;1;_
Long Time | 090515PM | !90:00:00>LL;1;_
Short Time | 1345 | !90:00;1;_
GetTextLen函数,用于返回用户输入的未经格式化之前的字符数:
function GetTextLen: Integer;
Memo是一个能显示和编辑多行文本编辑器,TMemo由TCustomMemo继承而来,而TCustomMemo又从TCustomEdit继承而来,因此Memo控件的属性、方法和事件与Edit控件大体相同。
CustomMemo对象的主要属性
其中,Lines属性是一个典型的TStrings对象。我们可以利用该对象的各种属性方法来随心所欲地定制Memo中的每一行内容,比如:
Memo1.Lines.Add('这就是利用Strings对象的Add方法添加一行的例子');
或者,我们可以读取一个文本文件的内容,并将其添加到Memo编辑器中。
procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Lines.Clear;
memo1.Lines.LoadFromFile('C:\Boot.ini');
end;
假设窗体上有一个按钮,并且按钮的Default的属性为True,那么当用户在Memo对象中输入时,当按下回车键后,究竟是换行还是相当于单击了默认按钮呢?这就需要使用WantReturns属性。如果该属性为True,那么回车相当于换行;如果为False,那么回车相当于单击了默认按钮。要换行的话,就必须使用组合键“Ctrl + Enter”。
类似的,如果WantTabs属性为True,用户按下Tab键将使光标在编辑器中移动一个制表位,而不是使输入焦点在窗体的窗口控件上切换。而当该属性为False时,要使光标移动一个制表位,必须使用组合键“Ctrl + Tab”。
RichEdit对象位于Win32组件面板上。它与Memo对象非常类似,都可以编辑多行文本,但Memo编辑器中的文本只能有一种格式,而RichEdit对象中的文本却可以包含多种字体和颜色。
RichEdit对象的常用属性和Memo对象差不多,下面列出了它从TCustomRichEdit对象继承下来的一些独特属性。
RichEdit对象的常用属性
RichEdit对象的SelAttributes属性可以用来指定选定文本的颜色、字体等格式。在用SelStart和SelLength属性选定区域后,就可以用SelAttributes属性来设置选定文字的格式了。SelAttributes属于TTextAttributes类,该类的对象可以指定文字的字体、颜色、字号、字形等等。SelAttributes属性可以通过Assign方法来获取TFont和TColor对象中的字体和颜色,TFont和TColor对象也能通过Assign方法来取得SelAttributes中的字体和颜色。
DefAttributes属性指的是RichEdit组件的默认属性,其用法和SelAttributes属性完全相同。
使用Paragraph属性来获得RichEdit控件用来指定段落格式信息的TParaAttributes对象。段落格式包含了对齐方式、缩进、编号方式、制表符等信息。
Paragraph属性是只读属性,因为一个CustomRichEdit对象只能包含一个不变的ParaAttributes对象。但是,通过设置ParaAttributes对象的属性,我们可以改变当前段落的格式。我们可以一个属性一个属性地设置,也可以通过Paragraph属性的Assign方法从给一个已存在的ParaAttributes对象中读取。所谓当前段落指的是包含选定文本的段落,如果不存在选定文本,当前段落指的是光标所在段落。
主要事件:
主要方法有:
位于Samples组件面板上的SpinEdit(数字编辑框)组件,专门用来输入数字。也可以单击上下箭头按钮来增减数字。数字编辑框的常用方法、事件和编辑框组件基本相同。常用属性如下:
SpinEdit组件的常用属性
对于每个编辑组件的全部方法请参见Delphi在线帮助。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155540.html原文链接:https://javaforall.cn