属性

说明

PasswordChar

这个属性在一些编辑框组件如TMaskEdit、TDBEdit中都有。缺省时该属性为#0,即没有掩码。用户可以自己设置一个掩码,如‘*’,则用户在编辑框中输入的字符都将以‘*’字符显示,而隐藏真实的字符。

AutoSize

确定编辑框是否随字体变化而自动变动尺寸,缺省为True

Text

该属性用于显示和保存编辑框中的字符串

MaxLength

确定编辑框最多可以输入的字符数,缺省时为0,表示可以输入任意多的字符

ReadOnly

确定程序运行时,用户是否可以改变编辑框中的内容。若为True,表示不可以编辑。

AutoSelect

确定当编辑框获得输入焦点时,编辑框中的文字是否自动被选中

  Edit常用的几个事件为:OnChange、OnKeyPress、OnEnter事件,下面对它们做简单的介绍:

事件

说明

OnChange

当编辑框中的内容发生变化时,触发该事件,它是Edit中最常用,也是最有用的事件之一

OnKeyPress

当按下一个按键时,触发该事件

OnEnter

编辑框获得输入焦点时,触发该事件

  上边介绍的三个编辑框事件非常有用,在Delphi编程中经常用到。使用这三个事件,可以实现一些很有用的功能:

  1.使用OnEnter事件,可以在编辑框获得输入焦点时,给出提示或触发其它事件。下面的实例在编辑框Edit1获得输入焦点时给出一个提示信息,并使将Button1失效。

procedure TForm1.Edit1Enter(Sender: TObject);

  begin 

  showmessage('请输入您的密码'); 

  Button1.Enabled:=False; 

  end;

  2.使用OnKeyPress事件,可以限制在编辑框中输入的字符的种类。下面的例子限制了编辑框Edit1中只能输入数字,而不能输入其它的字符。若按下非数字按键,将发出蜂鸣声。

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

  begin 

  if not(key in['0'..'9',#8])then 

   begin 

    key:=#0; 

    MessageBeep(-1); 

   end; 

  end;

  在上边的例程中,Key为按下的字符,使用not方法来判断输入的字符是否为数字(0至9)或者是删除键#8(注意不要连删除键也屏蔽)。如果是非数字输入,使用语句“Key:=#0”将其屏蔽,#0为空,表示没有输入。

  3.使用OnChange事件,可以在编辑框中的内容发生某种变化时,触发其它事件,如使按钮生效或失效,让输入焦点转移到某个控件上。下面的例程在编辑框Edit1中的内容为‘123456’时,使Button1生效,同时将输入焦点转移到Button1上。

procedure TForm1.Edit1Change(Sender: TObject);

  begin 

    if Edit1.Text='123456' then 

     begin 

       button1.Enabled:=true; 

       Form1.FocusControl(button1); 

     end; 

  end;

  下面我们将使用Edit控件的这些特性编写一个简单的“身份验证”程序,程序中使用了两个Label、两个Edit和两个BitBtn控件。其中Edit1、Edit2的MaxLength属性值都为6,Edit2的PasswordChar为‘*’;另外Edit1限制了输入,只接收数字。

  当用户在Edit1中输入6个数字后,输入焦点自动跳到Edit2中;当确认Edit1和Edit2中的学号和密码输入正确(学号为950755,密码为123456),Ok按钮被激活,并获得输入焦点。程序界面如下图所示:

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
close;  //关闭窗体
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.text:='';     //创建窗体时,让编辑框为空
Edit2.text:='';
BitBtn1.Enabled:=false;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin    //当编辑框Edit1中为6个字符时,输入焦点跳到Edit2
if length(edit1.Text)=6 then
form1.FocusControl(Edit2);
end;
procedure TForm1.Edit2Change(Sender: TObject);
begin  //如果两个编辑框中的输入是正确的,Ok按钮被被激活并获得输入焦点
if (Edit2.Text='123456') and (Edit1.Text='950755') then
begin
bitbtn1.Enabled:=true;
form1.FocusControl(bitBtn1);
end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
showmessage('您通过了身份验证。');
close;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin  //限制编辑框的输入,只接收数字
if not (key in['0'..'9',#8])then
begin
key:=#0;
messagebeep(1);
end;
end;
end.