AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Problem in der Procedur: Meldungsfenster kommt immer wieder
Thema durchsuchen
Ansicht
Themen-Optionen

Problem in der Procedur: Meldungsfenster kommt immer wieder

Ein Thema von Fussel9 · begonnen am 23. Okt 2009 · letzter Beitrag vom 25. Okt 2009
Antwort Antwort
Benutzerbild von Fussel9
Fussel9

Registriert seit: 25. Mai 2009
322 Beiträge
 
Turbo Delphi für Win32
 
#1

Problem in der Procedur: Meldungsfenster kommt immer wieder

  Alt 23. Okt 2009, 16:10
Hi hab folgendes Problem:

Delphi-Quellcode:
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;
diese Procedur ruft sich immer wieder auf...
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Problem in der Procedur: Meldungsfenster kommt immer wie

  Alt 23. Okt 2009, 16:15
Hallo,

wozu gehöhrt denn "a"?
Wo hast Du es definiert?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Problem in der Procedur: Meldungsfenster kommt immer wie

  Alt 23. Okt 2009, 16:17
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
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
Benutzerbild von Fussel9
Fussel9

Registriert seit: 25. Mai 2009
322 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Problem in der Procedur: Meldungsfenster kommt immer wie

  Alt 23. Okt 2009, 16:19
Zitat von SubData:
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
aber sieh doch mal genauer hin:::> CLOSE; @Klaus -> Wird in FormCreate auf Null gesetzt globale Integer Variable
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#5

Re: Problem in der Procedur: Meldungsfenster kommt immer wie

  Alt 23. Okt 2009, 16:28
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-
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Fussel9
Fussel9

Registriert seit: 25. Mai 2009
322 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Problem in der Procedur: Meldungsfenster kommt immer wie

  Alt 23. Okt 2009, 16:30
Und was kann ich dagegen tun?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#7

Re: Problem in der Procedur: Meldungsfenster kommt immer wie

  Alt 23. Okt 2009, 16:35
Zitat von Fussel9:
Und was kann ich dagegen tun?
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;
Uwe Raabe
  Mit Zitat antworten Zitat
Frederika

Registriert seit: 28. Jan 2009
81 Beiträge
 
#8

Re: Problem in der Procedur: Meldungsfenster kommt immer wie

  Alt 23. Okt 2009, 17:13
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?
  Mit Zitat antworten Zitat
Benutzerbild von Fussel9
Fussel9

Registriert seit: 25. Mai 2009
322 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Problem in der Procedur: Meldungsfenster kommt immer wie

  Alt 25. Okt 2009, 15:39
Also, erst mal ein dickes
für eure Hilfe


aber....
die offensichtlichste Lösung hatte ich mal wieder übersehn...:
Zitat:
was hast Du eigentlich genau vor?
Es handelt sich dabei un ein fenster, das drei Sekunden lang angezeigt wird bevor man das Programm benutzen kann, das ist schon richtig...
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:
    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;
--> UForm2
Delphi-Quellcode:
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;
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...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz