![]() |
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 |
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:
mfg Whatever
CheckBox1.Checked := not CheckBox1.Checked;
CheckBox2.Checked := not CheckBox2.Checked; //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. |
Re: Arbeiten mit Timer
um wieviele Checkboxen handelt es sich denn?
|
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:
Sollten es viele Checkboxn sein, könntest Du dir gedanken über eine Schleife oder eine If.Abfrage machen.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. Du müsstest mal zeigen, was Du schon hast, und genau erklären was Du damit erreichen willst. Gruß Jens :-D |
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. |
Re: Arbeiten mit Timer
Zitat:
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: |
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:
Wenn diese Reinfolge drin ist passiert ein ereignis und das möchte ich auch
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; 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] |
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:
|
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; |
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. |
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