Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Timer Pausieren??? (https://www.delphipraxis.net/119484-timer-pausieren.html)

SimStar001 27. Aug 2008 10:04


Timer Pausieren???
 
hallo, ich habe folgendes porblem zu lösen.


ich habe einen timer auf meine form, der ein 2 minuten intervall hat.

wenn ich nun eine bestimmte funktion ausführe, soll der timer pausiert werden und nach beenden der funktion wieder an der stelle einsteigen an der er ausgestiegen ist.

wenn ich das über enabled mache fängt er ja immer wieder von f´vorne an! gibt es da ne ander möglichkeit für!?

DeddyH 27. Aug 2008 10:07

Re: Timer Pausieren???
 
Setz doch das Interval auf 1 Sekunde und zähle eine Property im Timer-Event hoch. Wenn diese Property 120 erreicht hat, führst Du Deinen Code aus. Nun kannst Du den Timer en-/disablen und die Property hat immer noch den letzten Wert.

itashadow 27. Aug 2008 10:11

Re: Timer Pausieren???
 
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  timer1.enabled := false;
  deinefunktionoderprocedure(parameterirgendwas);
  timer1.enabled := true;
end;

das müsste eigentlich klappen

SimStar001 27. Aug 2008 10:16

Re: Timer Pausieren???
 
also wenn ich dich jetzt richtig verstehe meinst du es so!?

Delphi-Quellcode:
 var sekunden : integer;
             darf_ausfuehren : boolean;
Delphi-Quellcode:
...procedure ontimer1.....
           begin
           if darf_ausfuehren then
             inc(sekunden);
           if (sekunden = 120) and (darf_ausfuehren) then
             begin
             //auszuführender Code
             sekunden := 0;
             end;
           end;

__________________________________________________ __________________________________________________ _______________
Zitat:

Delphi-Quellcode: markieren
procedure TForm1.Timer1Timer(Sender: TObject);
begin
timer1.enabled := false;
deinefunktionoderprocedure(parameterirgendwas);
timer1.enabled := true;
end;



das müsste eigentlich klappen

genau das will ich ja nicht! aber trotzdem danke

DeddyH 27. Aug 2008 10:18

Re: Timer Pausieren???
 
So meinte ich das. Allerdings würde ich keine globalen Variablen verwenden, sondern eine Property des Formulars definieren.

SimStar001 27. Aug 2008 10:19

Re: Timer Pausieren???
 
ok danke, und wie geht das mit der proberty?

damit arbeite ich nie!

kannst mir das vielleicht schnell erklären!?

DeddyH 27. Aug 2008 10:22

Re: Timer Pausieren???
 
Delphi-Quellcode:
type TMyForm = class(TForm)
private
  FWert: integer;
...
public
  property Wert: integer read FWert write FWert;
...
end;

procedure TMyForm.FormCreate(Sender: TObject);
begin
  FWert := 0;
end;
Nun kannst Du auf "Wert" zugreifen.

SimStar001 27. Aug 2008 10:25

Re: Timer Pausieren???
 
also kann ich die Variable Fwert einmal für die Sekunden zum zählen nehmen und noch eine solche variable aufmachen zur kontrolle!?


und was ist jetzt anders, bzw besser als bei globalen variablen!?

DeddyH 27. Aug 2008 10:30

Re: Timer Pausieren???
 
Eine Property ist immer an eine Instanz gebunden, globale Variablen gelten über alle Instanzen. Daher sollte man globale Variablen nur da einsetzen, wo sie Sinn machen, z.B. als Referenzzähler.

Fussball-Robby 27. Aug 2008 11:59

Re: Timer Pausieren???
 
Wobei man hier nicht einmal eine neue Property anlegen muss, sondern gleich den Tag des Timers nehmen kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:58 Uhr.
Seite 1 von 2  1 2      

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