2017-02-25 6 views
0

Impossible de trouver une réponse à celui-ci ici. Très probablement très simplement mais comme je ne suis qu'un delphi "Dabbler" je n'ai pas été capable de le comprendre. J'ai un Splash Screen qui commence bien sûr en premier mais qui sert aussi d'écran de connexion. L'utilisateur entre son nom et ils ont accès. Cependant, s'il n'y a pas d'entrée dans un délai de 15 minutes, je voudrais que l'application se connecte de toute façon avec un nom d'utilisateur par défaut et informez-moi qu'aucun utilisateur n'a ouvert de session. comment l'obtenir à l'expiration. Je suppose qu'il doit être dans la fonction de classe quelque part mais ..... Voici le code. Merci d'avance les gars.Comment faire pour obtenir un formulaire Splash à expiration dans Delphi

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

Exécuter une minuterie. Si elle expire, fermez le formulaire. –

+0

David. J'ai supposé qu'un Timer serait la réponse mais où dois-je mettre le code, dans la fonction de classe je crois mais j'utilise une instruction REPEAT UNTIL ou {If (result = mrOK) ou (MyTimer = xxxxx) puis} faire la connexion par défaut. .... –

+0

Peu importe. La minuterie peut être n'importe où. Quand il expire, fermez le formulaire. –

Répondre

1

mis simplement un TTimer sur le formulaire de démarrage, mettre ses Interval à 15 minutes, et son événement OnTimer fermer la forme. Chaque fois que l'utilisateur tape quelque chose, réinitialisez le minuteur.

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; 

Ensuite, vous pouvez le faire:

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;