![]() |
Formular für bestimmte Zeit deaktivieren
Hi,
ich bin es schon wieder. Ich stehe jetzt vor dem Problem, dass ich nach dem Drücken eines Buttons, über einen Timer einen Ordner beobachte ob eine bestimmte Datei reinkopiert wird. Ein Zweiter Timer soll nun 20 sekunden laufen und solange Dieser läuft darf das Formular nicht geschlossen werden oder ein Button gedrückt werden. Wenn nach den 20 Sekunden die Datei noch nicht gefunden wurde soll er das Formular wieder aktivieren und eine Fehlermeldung bringen. Soweit die Beschreibung. Nur wie Weiß ich wann die 20 Sekunden rum sind? Der Timer soll ja nur einmal laufen? Ich bin für jede Hilfe Dankbar Gruß Beck93 |
AW: Formular für bestimmte Zeit deaktivieren
Du kannst den Timer.Interlav auf 20000 stellen oder alternativ auf 1000 und jede Sekunde einen Zähler hochzählen. Bei 20 stellst Du den Timer dann aus.
|
AW: Formular für bestimmte Zeit deaktivieren
Ich würde es genauso wie Stahli umsetzen und zusätzlich noch das CanClose des Forms auf false setzen, damit das Formular auch wirklich nicht während der Wartezeit geschlossen werden kann.
|
AW: Formular für bestimmte Zeit deaktivieren
Sorry wenn ich nochmal doof nachfragen muss aber so ganz habe ich es leider noch nicht verstanden.:oops:
Also in der Zeit der Timer mit den 20 Sekunden läuft muss ich ja ständig gucken ob eine neue Datei im Ordner ist und sobald Sie da ist soll er abbrechen. Wenn Sie nach 20 Sekunden nicht da ist soll er auch abbrechen mit Fehlermeldung. In diesem Zusammenhang habe ich leider noch nicht ganz verstanden wie ich das Timer.Interval verwenden kann. Ich wäre euch sehr Dankbar wenn Ihr vielleicht mal ein kleines Beispiel machen könntet. Danke trotzdem schon einmal:thumb: Gruß Beck93 |
AW: Formular für bestimmte Zeit deaktivieren
Ok, dann würde ich einfach die Zeit merken, wann das Formular eingeblendet werden soll:
Delphi-Quellcode:
In Deinem Timer prüfst Du dann die Files und wenn
DT := Now + (20 * OneSecond);
Delphi-Quellcode:
ist, blendest Du Dein Formular ein und setzt DT wieder auf 0.
(DT <> 0) and (Now > DT)
(Den Timerintervall auf 20 Sekunden zu setzen, ist dann wohl nicht zweckmäßig.) |
AW: Formular für bestimmte Zeit deaktivieren
Hallo,
ist eigentlich ganz einfach. Deinen Timer stellst Du auf 1000 ms ein (=1 Sec.). Nun durchläuft der Timer jede Sekunde die ihm übergebenen Aufgaben. Zu den Aufgaben gehört: 1. Prüfen FileExists, falls ja, dann Timer deaktivieren 2. Eine Zählervariable, welche die Anzahl der Durchläufe zählt mit Inc um 1 erhöhen 3. Wenn die Zählervariable = 20, dann Timer deaktivieren und Fehlermeldung ausgeben Nicht vergessen: Deine Anwendung wieder freigeben |
AW: Formular für bestimmte Zeit deaktivieren
Nimm Stahlis Vorschlag, der ist eleganter. :)
|
AW: Formular für bestimmte Zeit deaktivieren
Erst einmal vielen Dank für eure Antworten.
Ich habe den vorschlag von MGC umgesetzt da ich über eine Ini-Datei steuern will/muss wie lange es bis zur Fehlermelduung dauert und ich mir nicht vorstellen konnte wie ich das mit Stahlis Idee machen könnte. Ich habe es jetzt so gelöst.
Delphi-Quellcode:
So nur leider ist die Variable Zaehler bei jedem neuen durchlauf wieder Null und ich weiß nicht wie ich das so ändern könnte?
procedure TFormDatenAnfordern.TimeOutTimer(Sender: TObject);
Var DateinameQuelle: String; IniName: string; Zaehler: integer; Sek: string; begin IniDatei := TIniFile.Create(ExtractFilePath(Application.ExeName) + IniName); Sek:= IniDatei.ReadString('Sonstiges','Sekunden',''); DateinameQuelle:= IniDatei.ReadString('Pfade','DateinameQuelle',''); if Zaehler <= StrToInt(Sek) then begin if FileExists(DateinameQuelle) then begin Timer1.Enabled:= true; FormDatenAnfordern.Enabled:= true; TimeOut.Enabled:= false; end; end else begin ShowMessage('Keine Antwort erhalten! Bitte versuchen Sie es erneut.'); FormDatenAnfordern.Enabled:= true; end; Inc(Zaehler); FreeAndNil(IniDatei); end; Wäre echt cool wenn Ihr mir nochmal weiter helfen könntet. Gruß Beck93 |
AW: Formular für bestimmte Zeit deaktivieren
Da Zaehler eine lokale Variable ist, gilt sie nur innerhalb der Methode. Deklarier sie doch als privates Feld des Formulars, dann ist sie dort global erreichbar und gültig.
|
AW: Formular für bestimmte Zeit deaktivieren
Super jetzt funktioniert es auch:thumb: Vielen Dank an alle
Gruß Beck93 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz