似乎无法在这里找到答案。很可能非常简单,但因为我只是一个德尔福" Dabbler"我还没有弄清楚。 我有一个启动画面,它当然首先踢,但它也作为登录屏幕。用户输入他们的名字并获得访问权限。但是,如果在15分钟的时间段内没有任何输入,我希望应用程序无论如何都要使用默认用户名登录,并告诉我没有实际用户登录。大部分都已覆盖,只能#& 39;弄清楚如何让它超时。我假设它必须在类函数somwhere但是......这是代码。先谢谢你们。
class function TSplashForm.Execute: boolean;
begin
with TSplashForm.Create(nil) do
try
Result := ShowModal = mrOk;
finally
Free;
end;
end;
procedure TSplashForm.btnOKClick(Sender: TObject);
begin
if edtLoginname.Text = UName then
ModalResult := mrOK
else
begin
ModalResult := mrNone;
ShowMessage(edtLoginName.Text+' is an Incorrect Username.....Try AGAIN');
edtLoginName.Text := '';
end;
end;
答案 0 :(得分:1)
只需在启动表单上添加TTimer
,将其Interval
设置为15分钟,然后让OnTimer
事件关闭表单即可。每次用户输入内容时,请重置计时器。
procedure TSplashForm.edtLoginnameChange(Sender: TObject);
begin
Timer1.Enabled := false;
Timer1.Enabled:= true;
end;
procedure TSplashForm.Timer1Timer(Sender: TObject);
begin
ModalResult := mrIgnore;
end;
procedure TSplashForm.btnOKClick(Sender: TObject);
begin
if edtLoginname.Text = UName then
ModalResult := mrOK
else begin
ModalResult := mrNone;
ShowMessage(edtLoginName.Text+' is an Incorrect Username.....Try AGAIN');
edtLoginName.Clear;
end;
end;
然后你可以这样做:
class function TSplashForm.Execute: Integer;
begin
with TSplashForm.Create(nil) do
try
Result := ShowModal;
finally
Free;
end;
end;
case TSplashForm.Execute of
mrOK: // user logged in...
mrIgnore: // timed out...
else
// cancelled ...
end;