2017-02-25 2 views
0

Ich kann nicht scheinen, eine Antwort auf dieses hier zu finden. Höchstwahrscheinlich sehr einfach, aber da ich nur ein Delphi "Dabbler" bin, konnte ich es nicht herausfinden. Ich habe einen Splash-Screen, der natürlich zuerst eintritt, aber auch als Anmeldebildschirm dient. Der Benutzer gibt seinen Namen ein und er erhält Zugang. Wenn jedoch innerhalb von 15 Minuten keine Eingabe erfolgt, möchte ich, dass die App sich trotzdem mit einem Standardbenutzername anmeldet und mir sagt, dass kein tatsächlicher Benutzer angemeldet ist. Die meisten davon sind abgedeckt heraus, wie es zur Zeitüberschreitung kommt. Ich nehme an, dass es in der Klassenfunktion irgendwo anders sein muss, aber ..... Hier ist der Code. Vielen Dank im Voraus Jungs.So erhalten Sie ein Splash-Formular auf Timeout in 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

Führen Sie einen Timer. Wenn es abläuft, schließen Sie das Formular. –

+0

David. Ich nahm an, ein Timer wäre die Antwort, aber wo finde ich den Code, in der Class Function glaube ich, aber ich verwende eine REPEAT UNTIL-Anweisung oder {If (Ergebnis = mrOK) oder (MyTimer = xxxxx) dann tun Standard-Login. .... –

+0

Ist nicht wirklich wichtig. Der Timer kann überall sein. Wenn es abläuft, schließen Sie das Formular. –

Antwort

1

einfach ein TTimer auf der Splash Form setzen, legen Sie seine Interval-15 Minuten und haben ihr OnTimer Ereignis das Formular schließen. Jedes Mal, wenn der Benutzer etwas eingibt, setzen Sie den Timer zurück.

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; 

Dann können Sie dies tun:

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; 
Verwandte Themen