常用组件的使用(2)- TEdit单行文本编辑组件

TEdit组件提供了用户与程序的交互界面,主要用于数据的显示与输入。

1、AutoSelect属性:当该组件获得焦点时,是否选中该组件中的所有文本,该属性只能在单行文本中使用。

 

2、BorderStyle属性:可调整组建的客户区域突出效果,默认bsSingle(有单线边框),bsNone(无边框,平面)。

 

3、CanUndo属性:决定用户修改文本后能否自动通过调用Undo 方法回退,也就是撤回操作(Ctrl+Z)。

 

4、CharCase属性:用于确定组件中文本的大小写,可将组件中的内容强制转换为特定的大小写。

 

5、MaxLength属性:限制用户输入的字符数,为 0 ,表示没有指定任何限制(例如输入电话号码)。

 

6、PasswordChar属性:输入的内容显示为特殊字符(密文),如果为空(ANSI字符为0),编辑组件将显示正常文本,该属性只是影响外观,Text属性会反应输入的实际值。

 

7、ReadOnly属性:用于是否可改变编辑组件中的文本,为True时不可修改但允许选择并复制到剪贴板。反之,可编辑内容。

 

8、SelStart属性:读取该属性的值,可确定第 1 个被选字符的起始位置,0 指向第1 个字符,如果没有所选文本,则该属性指向光标位置,设置这个属性删除当前选择并将光标位置指向字符的前面。

如果要选择一定范围的文本,则首先设置该属性指向光标,然后设置SelLength 属性扩大选择范围。(简而言之就是读取一段文本,然后去欸的那个所选字符的起始位置)

 

9、SelLength属性:该属性用于指定所选文本的字符长度,设置后可将从SelStart 开始前的SelLength 个字符选中,设置其值大于从SelStart 开始到文本结束的字符数,将使字符串被全部选中。

此时读取该属性返回实际所选取的字符数,而不是设置其值。

示例:选中指定长度的文本

begin
  Edit3.SetFocus;
  Edit3.SelStart:= StrToInt(Edit1.Text);
  Edit3.SelLength:= StrToInt(Edit2.Text);
end;

 

示例:验证输入文本的合法性

//利用OnChange事件验证输入到文本框中的文本的合法性,如果使用非数字输入就会弹框提示
procedure TForm1.Edit1Change(Sender: TObject);
var
  Str: string;
begin
  Str:= '';
  Str:= Edit1.Text;
  if Length(Str)> 0 then
  if not (Str[Length(Str)] in ['0'..'9',#8]) then
  begin
    Application.MessageBox('请输入数字!','博客园',MB_OKCANCEL + MB_ICONINFORMATION);
    Edit1.text:= LeftStr(Str,Length(Str)- 1);//截取字符串Str左侧*个字符。使用LeftStr 需要引用StrUtils。
  end;
  Edit1.SelStart:= Length(Edit1.Text);
end

 

控制TEdit中输入的数据

一般在数据录入时都需要注意数据的合法性和安全性,这样的控制完全可以在键盘按键时就控制。

OnKeyPress事件:当用户按下键盘上的按键时产生该事件,使用这个事件处理程序可执行单个字符被按下时的特定操作。在这个事件处理程序中,Key函数为Char类型,因此该事件注册

按键的ASCII字符。如果不符合ASCII 字符值得键(如Shift 或F1)则不触发该事件。组合键(例如Shift+ A)只触发一个该事件(例如如果 Caps Lock键为关闭状态,按下Shift + A组合键将产生A值)。

如果要相应非ASCII 键或组合键,可使用 OnKeyDown或OnKeyUp 事件处理程序。

示例:

//限制输入的数据,键盘按键按下时产生该事件
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in ['a'..'z','A'..'Z',#8]) then
  begin
    Application.MessageBox('只能输入英文字符!','博客园',MB_OKCANCEL + MB_ICONINFORMATION);
    Key := #0;
  end;
end;

 

OnKeyDown事件:当用户按下键盘上得按键时触发该事件,在这个事件中Key 是一个整型变量,它的取值时由键盘上的虚拟值组成的。

示例:

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Edit2.Text:= IntToStr(Key);
  if Shift = [ssShift] then
    Edit1.Text:= 'Shift'
  else if Shift = [ssAlt] then
    Edit1.Text:= 'Alt'
  else if Shift = [ssCtrl] then
    Edit1.Text:= 'Ctrl'
  else
    Edit1.Text:= '';
end;

 

posted @ 2020-04-27 23:04  范思哲  阅读(899)  评论(0编辑  收藏  举报