![]() |
Problem in der Procedur: Meldungsfenster kommt immer wieder
Hi hab folgendes Problem:
Delphi-Quellcode:
diese Procedur ruft sich immer wieder auf...
procedure TFLemon.TLemonTimer(Sender: TObject);
var Editor: TEditor; begin if a <> 1 then begin LLizenz.Visible:=True; a:=1; end else begin if MessageDlg('Willst du selbst eine Grußkarte erstellen?',mtConfirmation,[mbYes,mbNo],0) = mrYes then begin Close; Editor:=TEditor.create(self); Editor.Show; end; end; end; |
Re: Problem in der Procedur: Meldungsfenster kommt immer wie
Hallo,
wozu gehöhrt denn "a"? Wo hast Du es definiert? Grüße Klaus |
Re: Problem in der Procedur: Meldungsfenster kommt immer wie
Diese Prozedur gehört zu einem Timer.
Timer haben die Angewohnheit die Prozedur immer wieder auszuführen. Manche könnten meinen, dass Timer genau dafür da sind ;-) |
Re: Problem in der Procedur: Meldungsfenster kommt immer wie
Zitat:
Delphi-Quellcode:
@Klaus -> Wird in FormCreate auf Null gesetzt globale Integer Variable
CLOSE;
|
Re: Problem in der Procedur: Meldungsfenster kommt immer wie
der Timer stoppt erst, wenn die Form geschlossen wird.
also wenn man auf "JA" drückt. wärend der MessageDialog angezeigt wird, werden auch WindowsBotschaften verarbeitet und demnach wird auch wärend dieser Zeit alle 3 Sekunden die Timerprozedur aufgerufen- |
Re: Problem in der Procedur: Meldungsfenster kommt immer wie
Und was kann ich dagegen tun?
|
Re: Problem in der Procedur: Meldungsfenster kommt immer wie
Zitat:
Delphi-Quellcode:
procedure TFLemon.TLemonTimer(Sender: TObject);
var Editor: TEditor; begin if a <> 1 then begin LLizenz.Visible:=True; a:=1; end else begin TLemonTimer.Enabled := false; // verhindert ein erneutes Auslösen if MessageDlg('Willst du selbst eine Grußkarte erstellen?',mtConfirmation,[mbYes,mbNo],0) = mrYes then begin Close; Editor:=TEditor.create(self); Editor.Show; end; end; end; |
Re: Problem in der Procedur: Meldungsfenster kommt immer wie
Fussel, was hast Du eigentlich genau vor? Es sieht aus wie eine künstliche Warteschleife, bevor der Nutzer die eigentliche Funktion nutzen darf, richtig?
Warum dann nicht einfach die eigentliche Funktion deaktivieren (...Enabled := False) und im Timer dann aktivieren und den Timer natürlich ausschalten. Wäre das nicht geradliniger und würde keine globalen Variablen verbrauchen? |
Re: Problem in der Procedur: Meldungsfenster kommt immer wie
Also, erst mal ein dickes :thumb:
für eure Hilfe :dp: aber.... die offensichtlichste Lösung hatte ich mal wieder übersehn...: Zitat:
Was macht man denn nur - wenn man 3 sekunden nur dieses Fenster sehn soll... klar: statt in den Timer reinzuschreiben(der sich auf dem Fenster befindet das aufgerufen wird) und den zu Enablen - Disablen schreiben wir es da hin, wo das fenster aufgerufen wird! Statt Form2.Show; Form2.ShowModal; Und schon sind alle meine Probleme gelösst , denn bis 'Form2' wieder geschlossen wird geht es nicht weiter. im Klar-/Quell- Text:--> UMain
Delphi-Quellcode:
--> UForm2
self.hide;
Form2:=TForm2.Create(self); Form2.ShowModal; if MessageDlg('Willst du selbst eine Grußkarte erstellen?',mtConfirmation,[mbYes,mbNo],0) = mrYes then begin Editor:=TEditor.create(self); Editor.Show; end else begin Application.terminate; end; end;
Delphi-Quellcode:
Und das ganze mit der globalen variable habe ich ja nur, weil ich nicht weiß wie ich sonst abfragen soll, ob die Prozedur schon einmal durchlaufen wurde...
procedure TForm2.FormCreate(Sender: TObject);
begin a:=0; end; procedure TForm2.TFormTimer(Sender: TObject); begin if a <> 1 then begin Label.Visible:=True; a:=1; end else begin Close; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:24 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 by Thomas Breitkreuz