查看完整版本: Delphi标准控件-编辑框(Edit)

Teacher 2008-8-30 00:25

Delphi标准控件-编辑框(Edit)

[tr][td]
[/td][/tr][tr][td]来源:洪恩在线 作者:[/td] [/tr][tr][td][table][tr][td][/td][/tr][/table][align=left]  编辑框也是Windows程序中常用的组件,它主要用于输入单行文字。下面解释编辑框一些常用属性。[/align]  Edit常用的几个事件为:OnChange、OnKeyPress、OnEnter事件,下面对它们做简单的介绍:
[align=left]  上边介绍的三个编辑框事件非常有用,在Delphi编程中经常用到。使用这三个事件,可以实现一些很有用的功能:[/align]
[table=90%][tr=#3399ff][td=1,1,21%]属性[/td][td=1,1,79%]说明[/td][/tr][tr][td=1,1,21%]PasswordChar[/td][td=1,1,79%]这个属性在一些编辑框组件如TMaskEdit、TDBEdit中都有。缺省时该属性为#0,即没有掩码。用户可以自己设置一个掩码,如‘*’,则用户在编辑框中输入的字符都将以‘*’字符显示,而隐藏真实的字符。[/td][/tr][tr][td=1,1,21%]AutoSize[/td][td=1,1,79%]确定编辑框是否随字体变化而自动变动尺寸,缺省为True[/td][/tr][tr][td=1,1,21%]Text[/td][td=1,1,79%]该属性用于显示和保存编辑框中的字符串[/td][/tr][tr][td=1,1,21%]MaxLength[/td][td=1,1,79%]确定编辑框最多可以输入的字符数,缺省时为0,表示可以输入任意多的字符[/td][/tr][tr][td=1,1,21%]ReadOnly[/td][td=1,1,79%]确定程序运行时,用户是否可以改变编辑框中的内容。若为True,表示不可以编辑。[/td][/tr][tr][td=1,1,21%]AutoSelect[/td][td=1,1,79%]确定当编辑框获得输入焦点时,编辑框中的文字是否自动被选中[/td][/tr][/table][table=90%][tr=#3399ff][td=1,1,12%]事件[/td][td=1,1,64%]说明[/td][/tr][tr][td=1,1,12%]OnChange[/td][td=1,1,64%]当编辑框中的内容发生变化时,触发该事件,它是Edit中最常用,也是最有用的事件之一[/td][/tr][tr][td=1,1,12%]OnKeyPress[/td][td=1,1,64%]当按下一个按键时,触发该事件[/td][/tr][tr][td=1,1,12%]OnEnter[/td][td=1,1,64%]编辑框获得输入焦点时,触发该事件[/td][/tr][/table][align=left]  1.使用OnEnter事件,可以在编辑框获得输入焦点时,给出提示或触发其它事件。下面的实例在编辑框Edit1获得输入焦点时给出一个提示信息,并使将Button1失效。[/align][align=left]  procedure TForm1.Edit1Enter(Sender: TObject);
   begin
   showmessage('请输入您的密码');
   Button1.Enabled:=False;
   end;[/align][align=left]  2.使用OnKeyPress事件,可以限制在编辑框中输入的字符的种类。下面的例子限制了编辑框Edit1中只能输入数字,而不能输入其它的字符。若按下非数字按键,将发出蜂鸣声。[/align][align=left]  procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
   begin
   if not(key in['0'..'9',#8])then
    begin
     key:=#0;
     MessageBeep(-1);
    end;
   end;[/align][align=left]  在上边的例程中,Key为按下的字符,使用not方法来判断输入的字符是否为数字(0至9)或者是删除键#8(注意不要连删除键也屏蔽)。如果是非数字输入,使用语句“Key:=#0”将其屏蔽,#0为空,表示没有输入。[/align][align=left]  3.使用OnChange事件,可以在编辑框中的内容发生某种变化时,触发其它事件,如使按钮生效或失效,让输入焦点转移到某个控件上。下面的例程在编辑框Edit1中的内容为‘123456’时,使Button1生效,同时将输入焦点转移到Button1上。[/align][align=left]  procedure TForm1.Edit1Change(Sender: TObject);
   begin
    if Edit1.Text='123456' then
      begin
       button1.Enabled:=true;
       Form1.FocusControl(button1);
      end;
   end;[/align][align=left]  下面我们将使用Edit控件的这些特性编写一个简单的“身份验证”程序,程序中使用了两个Label、两个Edit 和两个BitBtn控件。其中Edit1、Edit2的MaxLength属性值都为6,Edit2的PasswordChar为‘*’;另外Edit1 限制了输入,只接收数字。[/align][align=left]  当用户在Edit1中输入6个数字后,输入焦点自动跳到Edit2中;当确认Edit1和Edit2中的学号和密码输入正确(学号为950755,密码为123456),Ok按钮被激活,并获得输入焦点。程序界面如下图所示:[/align][align=center][img=317,161]http://www.bianceng.cn/upimg/allimg/070508/6.gif[/img][/align][align=center][code]
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.

[/code][/align][/td][/tr]
页: [1]
查看完整版本: Delphi标准控件-编辑框(Edit)