我目前正在为一个学校项目编写代码。我提前为一个可能的noob问题道歉。
我需要为一个虚构的非政府组织制作一个系统,我需要让所有用户在使用该程序时注册并登录。
我使用editboxes和maskedits来接收登录数据。登录屏幕有两个编辑框,一个用于用户名,另一个用于密码。注册屏幕是相同的形式,已调整大小,并带有两个额外的动态编辑框:一个用于确认密码,另一个用于用户的电子邮件地址。
现在,我使静态编辑框包含默认值:如果用户进入编辑框,则默认值将消失。如果用户随后退出编辑框而未输入任何值,则会再次出现默认值。我还没有设法让动态编辑框也这样做。
如果激活已创建的动态组件,OnActivate事件处理程序(如OnEnter / OnExit)是如何触发的?
答案 0 :(得分:5)
如果您使用的是支持XP +视觉样式的相对现代的Delphi版本,那么TEdit
具有TextHint
属性,可以完全满足您的要求,而无需使用任何事件
procedure TMyForm.FormCreate(Sender: TObject);
var
Edit: TEdit;
begin
Edit := TEdit.Create(Self);
Edit.Parent := ...;
...
Edit.TextHint := 'default text here';
end;
否则,如果你真的想要使用这些事件,那么你可以这样做:
procedure TMyForm.FormCreate(Sender: TObject);
var
Edit: TEdit;
begin
Edit := TEdit.Create(Self);
Edit.Parent := ...;
...
Edit.Text := 'default text here';
Edit.OnEnter := EditEnter;
Edit.OnExit := EditExit;
end;
procedure TMyForm.EditEnter(Sender: TObject);
begin
if TEdit(Sender).Text = 'default text here' then
TEdit(Sender).Text := '';
end;
procedure TMyForm.EditExit(Sender: TObject);
begin
if TEdit(Sender).Text = '' then
TEdit(Sender).Text := 'default text here';
end;