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/)
-   -   Delphi Arbeiten mit Timer (https://www.delphipraxis.net/130407-arbeiten-mit-timer.html)

delphi-projekt 7. Mär 2009 22:51


Arbeiten mit Timer
 
Hallo,
ich habe folgendes Problem ich habe verschiedene checkboxen und
diese sollen immer in einer bestimmten Zeit gewählt werden. Die Zeit möchte ich in
ein Edit feld eingeben.

Also ich gebe in ein Edit feld zB 10 sekunden ein dann soll 10 sekunden lang
eine bestimmte checkbox checked sein.Im 2.edit feld habe ich auch eine zeit eingegeben und
nachdem die 10 sekunden um sind soll die nächste bestimmte checkbox checked sein
für die 2 zeit dann
usw.

ich hab schon so viel versucht aber nix klappt so wie ich das will.

Bitte ich brauch dringend hilfe.
Am besten ist wenn ihr mir einen kroben quelltext erstellt.

Danke

Whatever 7. Mär 2009 23:34

Re: Arbeiten mit Timer
 
Die Eigenschaft Checked ist eine boolsche Variable d.h. sie kann nur zwei verschiedene Werte annehmen (true/false).
Diese Werte kannst Du nun mit not einfach umkeheren also wird not Checkbox1.Checked, wenn sie vorher aktiviert, ist zu false.
So kannst Du im OnTimer Event zwei Zeilen schreiben (für jede Checkbox eine) in der der jeweilige Wert umgekehrt wird.

Delphi-Quellcode:
CheckBox1.Checked := not CheckBox1.Checked;
CheckBox2.Checked := not CheckBox2.Checked;
mfg Whatever

//Edit: Sorry hab grad gemerkt, dass Du das ja mit zwei verschiedenen Zeiten machen willst. Also aktivierst Du einfach nach ablauf des ersten Timers den zweiten.

himitsu 7. Mär 2009 23:59

Re: Arbeiten mit Timer
 
um wieviele Checkboxen handelt es sich denn?

Jens Hartmann 8. Mär 2009 00:12

Re: Arbeiten mit Timer
 
Hallo,

du musst das über das OnTimer Ereignis des Timer´s regeln..

Den Quelltext habe ich nicht geprüft, nur so zusammen getippt...

Delphi-Quellcode:

zB. Button.Click oder irgendwas anderes als Start...

begin
  Timer1.Interval := StrToInt(Edit1.Text); //Zeit dem Timer 1 zuweisen
  Timer2.Interval := StrToInt(Edit2.Text); //Zeit dem Timer 2 zuweisen

  Timer1.Enabled := True;

  CheckBox1.Checked := True;
end;

// Dann im OnTimer Ereignis

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  CheckBox1.Checked := False;
  Timer2.Enabled := true;
  CheckBox2.Checked := True;
end;


usw. usw. usw.
Sollten es viele Checkboxn sein, könntest Du dir gedanken über eine Schleife oder eine If.Abfrage machen.

Du müsstest mal zeigen, was Du schon hast, und genau erklären was Du damit erreichen willst.

Gruß

Jens :-D

himitsu 8. Mär 2009 00:59

Re: Arbeiten mit Timer
 
es läßt sich auch alles über einen Timer regeln.

- entweder einen Timer mit dem kleinsten gemeinsamen Teiler laufen lassen und dann die schritte für jedes Intervall zählen

- oder im Timerereignis einfach .Intervall ändern.

Dunkel 8. Mär 2009 01:12

Re: Arbeiten mit Timer
 
Zitat:

Zitat von himitsu
es läßt sich auch alles über einen Timer regeln.

Was auf jeden Fall besser ist! TTimer werden von Windows zur Verfügung gestellt, und dessen Ressourcen sind begrenzt. Es wäre schon schade, wenn Du mit zig-Checkboxen, und entsprechend vielen Timern, irgendwann eine EOutOfResource-Exception um die Ohren geschlagen bekommst...
Auch wenn die Ressourcen eines modernen Rechners/Betriebssystems sehr großzügig zu sein scheinen, sollte man immer möglichst sparsam mit ihnen umgehen; es gibt nämlich noch eine Welt außerhalb Deiner Executable... :wink:

delphi-projekt 8. Mär 2009 11:05

Re: Arbeiten mit Timer
 
Danke erstmal für die Antworten, haben mir schon etwas weiter geholfen.

Also mein Programm sieht wie folgt aus.

Ich habe einen 25 poligen druckerstecker am computer angeschlossen.
Daher habe ich 25 checkboxen. Von denen benötige ich nur die Pole 1,3,7,5,9

Delphi-Quellcode:
GetPortVal(port+2,@b,1);
cbStrobe.checked:=false;
GetPortVal(port,@b,1);
cbData3.checked:=true;
GetPortVal(port,@b,1);
cbData5.checked:=true;
GetPortVal(port,@b,1);
cbData7.checked:=true;
Wenn diese Reinfolge drin ist passiert ein ereignis und das möchte ich auch
noch mit den anderen zusammenstellungen machen. aber halt immer bloß für ein
bestimmtes zeitinterval. also geb ich in das edit feld z.b 10s ein dann soll
10s lang dieser befehl ausgeübt werden. insgesamt habe ich 4 edit felder weil
es 4 verschiedene zusammenstellungen gibt.

benötige ich jetzt 4 verschiedene Timer?
Und wie kann ich die Zeit am besten formatieren?

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]

Felix015 8. Mär 2009 19:03

Re: Arbeiten mit Timer
 
Äh nur mal so als Frage:
Wenn du den timer interval auf die Zahl setzt die eingegeben wurde zählst man doch keine sekunden oder?
Muss man nicht im Sekundentakt eine Variable hoch zählen und wenn diese bei der eingegebenen Zahl angekommen ist aufhören bzw die checkboxen umstellen??
Du brauchst nicht 4 Timer es reicht ein Timer und eine Variable typ integer in denen du hochzählst wo du gerade dran bist....
Delphi-Quellcode:
var zeit : integer; //wird nachher der Wert reingeschrieben bis zu dem gezählt werden soll
    zähl : integer = 1;
    modus : intger = 1;
timerprocedure;
begin
if modus = 1 then
begin
Inc(Zähl);
if Zähl = zeit then
begin
...
//checkboxen umstellen
Inc(Modus)                    
end;
end
else if modus = 2 then
begin
....
end;
end;
Zitat:

Und wie kann ich die Zeit am besten formatieren?
Was meinst du damit??

Jens Hartmann 8. Mär 2009 19:15

Re: Arbeiten mit Timer
 
Das mit den Sec. stimmt. Man könnte allerdings den Interval ja auch setzten.

Delphi-Quellcode:
zB. Button.Click oder irgendwas anderes als Start...

begin
  Timer1.Interval := 1000 * StrToInt(Edit1.Text); //Zeit dem Timer 1 zuweisen
  Timer2.Interval := 1000 * StrToInt(Edit2.Text); //Zeit dem Timer 2 zuweisen

  Timer1.Enabled := True;

  CheckBox1.Checked := True;
end;

Whatever 8. Mär 2009 19:27

Re: Arbeiten mit Timer
 
Können denn auch zwei CheckBoxen separat Checked sein oder werden alle nacheinender geschaltet?
Wenn mehrere separat Checked sein können brauchst Du meherere Timer wenn nicht reicht einer.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:25 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz