AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Timer enablen

Ein Thema von Reap3r · begonnen am 9. Nov 2009 · letzter Beitrag vom 12. Nov 2009
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Timer enablen

  Alt 9. Nov 2009, 16:24
Ich glaube nicht, dass Application.ProcessMessages die Lösung ist, es handelt sich ja nicht um eine langlaufende Schleife, die den Rest des Programms blockiert.
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
blauweiss

Registriert seit: 19. Jun 2007
142 Beiträge
 
#12

Re: Timer enablen

  Alt 9. Nov 2009, 17:05
Zitat von DeddyH:
Ich glaube nicht, dass Application.ProcessMessages die Lösung ist, es handelt sich ja nicht um eine langlaufende Schleife, die den Rest des Programms blockiert.
Im Gegenteil, Application.ProcessMessages ist so ziemlich das Gefährlichste, wenn es unbedarft "einfach mal so" eingesetzt wird.
Es ist mir ein Rätsel, warum diese "Lösung" für reine Anzeigeaktualisierungsprobleme hier im Forum so gerne vorgeschlagen wird.

blauweiss
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#13

Re: Timer enablen

  Alt 9. Nov 2009, 17:21
Wenn man an der anzeige "herum fummelt" dan müssen diese änderungen ja auch irgendwie zur Anzeige kommen.
Warum sollte diese Anzeigeänderung dann damit nicht durchgeführt werden?


Zitat von DeddyH:
Ich glaube nicht, dass Application.ProcessMessages die Lösung ist, es handelt sich ja nicht um eine langlaufende Schleife, die den Rest des Programms blockiert.
OK daran hatte ich nicht gedacht!

[quote="blauweiss"]
Zitat von DeddyH:
Im Gegenteil, Application.ProcessMessages ist so ziemlich das Gefährlichste, wenn es unbedarft "einfach mal so" eingesetzt wird.
Es ist mir ein Rätsel, warum diese "Lösung" für reine Anzeigeaktualisierungsprobleme hier im Forum so gerne vorgeschlagen wird.

blauweiss
Was, bitte, ist daran gefährlich? Überflüssig, ja, gefährlich???

Bitte, ich bin für jede Belehrung dankbar.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
blauweiss

Registriert seit: 19. Jun 2007
142 Beiträge
 
#14

Re: Timer enablen

  Alt 9. Nov 2009, 17:40
[quote="p80286"]Wenn man an der anzeige "herum fummelt" dan müssen diese änderungen ja auch irgendwie zur Anzeige kommen.
Warum sollte diese Anzeigeänderung dann damit nicht durchgeführt werden?

dafür bietet sich z.B. aControl.Paint oder aControl.Refresh an.

Zitat von blauweiss:
Zitat von DeddyH:
Im Gegenteil, Application.ProcessMessages ist so ziemlich das Gefährlichste, wenn es unbedarft "einfach mal so" eingesetzt wird.
Es ist mir ein Rätsel, warum diese "Lösung" für reine Anzeigeaktualisierungsprobleme hier im Forum so gerne vorgeschlagen wird.

blauweiss
Was, bitte, ist daran gefährlich? Überflüssig, ja, gefährlich???

Bitte, ich bin für jede Belehrung dankbar.

Gruß
K-H

Gefährlich: Mit Application.ProcessMessages wird quasi Parallelität ermöglicht.
Folgendes Beispiel:
In einem ButtonClick wird eine komplexe Berechnung auf dem "aktuellen Datensatz" durchgeführt. Weil während der Berechnung die Anwendung scheinbar eingefroren ist, wird jetzt z.B. in einer Schleife Application.ProcessMessages aufgerufen. Damit wird aber die Windows-Nachrichtenschleife abgearbeitet ! Der Anwender kann den Button ein weiteres Mal klicken -> die gleiche Berechnung startet ein weiteres Mal, während noch die vorherige läuft. Oder der Anwender ruft den Menuepunkt "Datei entfernen" auf -> der Datensatz wird entfernt, auf dem "gleichzeitig" die Berechnung läuft.
Application.ProcessMessages kann sehr nützlich sein, aber man muß sich bewußt sein, daß bestimmte Benutzeraktionen dann ausgeschlossen werden müssen.

Grüße,
blauweiss
  Mit Zitat antworten Zitat
Benutzerbild von simmi
simmi

Registriert seit: 24. Nov 2004
Ort: Röbel/Müritz
112 Beiträge
 
Delphi XE5 Professional
 
#15

Re: Timer enablen

  Alt 9. Nov 2009, 17:46
Hallo,

also ich habe einfach einmal Deinen Quelltext genommen und ausprobiert. Bei mir funktioniert es ohne jedes Problem. Hast Du einmal geprüft, ob Dein Problem eine andere Ursache haben könnte?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
timer1.Enabled:=true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if label1.Visible = true
  then
    begin
    label1.visible := false;
    Image1.Visible:= false;
    Image2.Visible:= true;
    label2.Visible:= true;
    end;
end;
Uwe
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#16

Re: Timer enablen

  Alt 9. Nov 2009, 17:52
Ich könnte mir vorstellen, dass dem Timer-Ereignis keine Methode zugewiesen ist.
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
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#17

Re: Timer enablen

  Alt 9. Nov 2009, 18:01
Zitat von blauweiss:

dafür bietet sich z.B. aControl.Paint oder aControl.Refresh an.
Da ich damit (in Schleifen, langen Verarbeitungsabfolgen) bisher keinen Erfolg hatte....

Zitat von blauweiss:

Gefährlich: Mit Application.ProcessMessages wird quasi Parallelität ermöglicht.
Folgendes Beispiel:
In einem ButtonClick wird eine komplexe Berechnung auf dem "aktuellen Datensatz" durchgeführt. Weil während der Berechnung die Anwendung scheinbar eingefroren ist, wird jetzt z.B. in einer Schleife Application.ProcessMessages aufgerufen. Damit wird aber die Windows-Nachrichtenschleife abgearbeitet ! Der Anwender kann den Button ein weiteres Mal klicken -> die gleiche Berechnung startet ein weiteres Mal, während noch die vorherige läuft. Oder der Anwender ruft den Menuepunkt "Datei entfernen" auf -> der Datensatz wird entfernt, auf dem "gleichzeitig" die Berechnung läuft.

Application.ProcessMessages kann sehr nützlich sein, aber man muß sich bewußt sein, daß bestimmte Benutzeraktionen dann ausgeschlossen werden müssen.
Dem wäre dann nichts mehr hinzuzufügen?!
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Reap3r

Registriert seit: 19. Mär 2009
87 Beiträge
 
#18

Re: Timer enablen

  Alt 10. Nov 2009, 21:47
hmmm...mann mann mann

ich bekomms net raus!
sitze schon soo lange daran, finde aber keinen Fehler!

Bitte helft mir.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#19

Re: Timer enablen

  Alt 10. Nov 2009, 22:40
Setz doch mal ein ShowMessage rein, dann siehst du ob der Timer losläuft oder nicht!

(auf die Frage mit dem Debugger hast du ja schließlich nicht geantwortet)

Delphi-Quellcode:
procedure TForm3.Timer1Timer(Sender: TObject);
begin
  ShowMessage( 'Ich bin Timer1, ich laufe jetzt los :-)' );
  if L1.Visible then // <--- Hier mal alternativ zum ShowMessage einen Breakpoint setzen
    begin
      L1.visible := false;
      Image1.Visible:= false;
      Image2.Visible:= true;
      L2.Visible:= true;
  end;
end;
BreakPoint -> Haltepunkt -> Wird das Programm in der Delphi-IDE mit F9 gestartet, dann hält es genau an dieser Stelle an

Zitat von DeddyH:
Ich könnte mir vorstellen, dass dem Timer-Ereignis keine Methode zugewiesen ist.
Tja, aber dazu äussert er sich ja nicht ... da können wir wohl auch nicht helfen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Reap3r

Registriert seit: 19. Mär 2009
87 Beiträge
 
#20

Re: Timer enablen

  Alt 11. Nov 2009, 14:09
Also...
nach einigem Probieren hab ich herausgefunden, dass der timer erst anspringt, wenn mann ihn zum 2. mal über den Button aktiviert.
Ich frag mich nur, warum er es beim ersten mal nicht tut...
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:36 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