AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Timer starten nach schließen mit caHide

Ein Thema von peter314 · begonnen am 3. Dez 2008 · letzter Beitrag vom 4. Dez 2008
Antwort Antwort
Seite 1 von 2  1 2      
peter314

Registriert seit: 3. Dez 2008
22 Beiträge
 
#1

Timer starten nach schließen mit caHide

  Alt 3. Dez 2008, 21:07
Hallo erstmal

Beim Programmieren bin ich auf folgendes Problem gestoßen.
Ich starte einen Timer nachdem ich die Form mit caHide geschlossen habe, aber irgendwie scheint der nicht ui starten. Mach ich was falsch oder irgendwas falsch verstanden (mit caHide)?

Hier mein Text:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Close;
end;

procedure TForm1.FormClose(Sender: TObject; var Action:TCloseAction);
begin
Action:= caHide;
Timer1.Enabled:= true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
b:= b+1;
if b=10 then
begin
Showmessage('Läuft');
Timer1.Enabled:= false;
end;
end;
Danke im voraus
peter

p.s. ich weiß leider nicht welche Programmiersprache ich benutze, dass wird in der Schule einfach so beigebracht
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Timer starten nach schließen mit caHide

  Alt 3. Dez 2008, 21:11
wie kommst du darauf das es nicht funktioniert? Hast du mal einen Haltepunkt gesetzt?
Ich würde dir übrigens empfehlen das abschalten des Timers und das anzeigen der Message zu vertauschen da sonst während des anzeigens der Message der Timer noch läuft und damit diese Timerfunktion mit der Message immer wieder aufkommen kann.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#3

Re: Timer starten nach schließen mit caHide

  Alt 3. Dez 2008, 21:11
Wie ist b definiert und auf welchem Interval steht der Timer?

P.S.: Willkommen in der DP
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
3. Dez 2008, 21:12
Dieses Thema wurde von "SirThornberry" von "Sonstige Fragen zu Delphi" nach "VCL / WinForms / Controls" verschoben.
peter314

Registriert seit: 3. Dez 2008
22 Beiträge
 
#5

Re: Timer starten nach schließen mit caHide

  Alt 3. Dez 2008, 23:19
b ist eine integer-Zahl und das Timer-Intervall liegt bei 1000 (ist doch in millisekunden oder
)

break-points hab ich schon mal gesetzt aber bei step over (F8 ) springt der irgendwie ans Ende und nicht so wie ichs gewohnt bin einen Schritt weiter.
Und es funktioniert nicht, da die Message nicht angezeigt wird. Ohne den Timer wurde sie das noch.

Danke Übrigens, dass das mit den Antworten so schnell ging.

Peter
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

Re: Timer starten nach schließen mit caHide

  Alt 4. Dez 2008, 09:00
Lass Dir den Wert von b doch mal ausgeben, möglicherweise ist er schon größer als 10, dann wird Deine Abfrage niemals wahr.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

Re: Timer starten nach schließen mit caHide

  Alt 4. Dez 2008, 10:35
Hallo,

wo wird b initialisiert?
Ist Form1 das Hauptformular der Anwendung? Wird die Anwendung beim Schließen dieses Formulares beendet?
Dann wird der Timer nicht mehr dazu kommen etwas zu tuen, sondern zusammen mit dem Formular freigegeben.
  Mit Zitat antworten Zitat
peter314

Registriert seit: 3. Dez 2008
22 Beiträge
 
#8

Re: Timer starten nach schließen mit caHide

  Alt 4. Dez 2008, 13:07
Wenn ichs mit F8 duchlaufen lasse wird die Message angezeigt, aber dann wird das Fenster auch nicht geschlossen.
Zitat:
Ist Form1 das Hauptformular der Anwendung?
Was meinst du mit Hauptformular?
Hier ein leicht veränderter Quelltext. Ich möchte das was in den Edit geschrieben wurde nach dem schließen der Datei speichern.
Delphi-Quellcode:
  peter = class
  procedure speichern;
  end;
var
  Form1: TForm1;
  z: peter;
  a: string;
  b: integer;
  zusave: TStringList;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
b:= 0;
{Form.Close}
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Close;
end;

procedure TForm1.FormClose(Sender: TObject; var Action:TCloseAction);
begin
Timer1.Enabled:= true;
a:= Form1.Edit1.Text;
Action:= caHide;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
b:= b+1;
if b=10 then
begin
Timer1.Enabled:= false;
Showmessage('Läuft');
z.speichern;
end;
end;

procedure peter.speichern;
begin
zusave:= TStringList.Create;
 try
  zusave.Add(a);
 finally
  zusave.SaveToFile('C:\WINDOWS\TEMP\Upd10082100.TMP');
  zusave.free;
 end;
end;

end.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#9

Re: Timer starten nach schließen mit caHide

  Alt 4. Dez 2008, 13:18
Hallo,

beendet sich das Programm, wenn Du Button1 anklickst?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Close;
end;
Ist Form1 das erste Formular, das im Projekt erstellt wird?
Delphi-Quellcode:
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Wenn so aussieht, wird das Programm beim Klick auf Button1 beendet und Du wirst kaum noch in die Ereignisroutine des Timers gelangen, da dieser mit dem Formular freigegeben wird und dann das Programm beendet.
Warum willst Du einen Timer benutzen, könntest Du die Logik aus der Timerroutine nicht genausogut im FormClose ausführen lassen?
  Mit Zitat antworten Zitat
peter314

Registriert seit: 3. Dez 2008
22 Beiträge
 
#10

Re: Timer starten nach schließen mit caHide

  Alt 4. Dez 2008, 14:05
Zitat:
Wenn es so aussieht
Sieht genauso aus.

Ich möchte mit dem Programm den Text, den der Benutzer schreibt mitschreiben (Hab' mit meinem Bruder gewettet, dass ichs schaff ).
Der mitgeschriebene Text soll dann in einer Datei gespeichert werden. Das Programm muss dann ja wohl eine weile im Hintergrund mitlaufen, sonst kann es das getippte nicht mitkriegen. Oder geht das doch irgenwie?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 06:01 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