![]() |
Timer startet immer neu obwohl disabled??
moin Leute :)
Ich hab nur kurz ne Frage warum sich dieser timer immer und immer wiederholt bzw. neu started??Irgendwo muss ein Fehler drin sein :S
Delphi-Quellcode:
Kurze erklärung...ich habe 20 fenster jeweils mit nem kleinen bild drauf, die bilder (invchecked)sind alle unsichtbar...wenn ich im laufenden program drauflicke werden die pics sichtbar um zu markieren welches der 20 fenster ich selektiert habe...zusätzlich ist auf jedem der fenster ein timer..., wenn ich am ende auf OK drücke sollen nur die timer der fenster ausgeführt werden welche der user selektiert hat, sprich wo die bilder sichtbar sind...daher:
procedure TForm1.Timer4Timer(Sender: TObject);
var c: Char; i: integer; begin if invchecked2.Visible=false then timer5.Enabled:=true; if invchecked2.visible=true then begin // sellshop keybd_event(VK_F2, 0, 0, 0); Keybd_Event(VK_F2,0,KEYEVENTF_KEYUP,0); sleep (1000); setcursorpos (746,193); sleep (1000); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); sleep(5000); setcursorpos (853,396); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); sleep (1000); //EK begin if length(Edit1.Text)> 0 then begin for i:= 0 to length(Edit1.Text) do begin c:= Edit1.text[i]; Case c of '1'..'9' : begin c:= upcase(c); keybd_event(ord(c),0,0,0); keybd_event(ord(c),0,keyeventf_keyup,0); end; 'A'..'Z': begin keybd_event(vk_Shift,0,0,0); keybd_event(ord(c),0,0,0); keybd_event(vk_Shift,0,keyeventf_keyup,0); keybd_event(ord(c),0,keyeventf_keyup,0); end; 'a'..'z': begin c:= upcase(c); keybd_event(ord(c),0,0,0); keybd_event(ord(c),0,keyeventf_keyup,0); end; else begin keybd_event(ord(c),0,0,0); keybd_event(ord(c),0,keyeventf_keyup,0); end; end; end; end; end; sleep(1000); setcursorpos (471,412); sleep(1000); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); sleep(500); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); sleep(1000); // Caution Window if checkbox1.checked=true then begin mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); sleep(500); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); sleep(1000); end; //Anzahl begin if length(Edit2.Text)> 0 then begin for i:= 0 to length(Edit2.Text) do begin c:= Edit2.text[i]; Case c of '1'..'9' : begin c:= upcase(c); keybd_event(ord(c),0,0,0); keybd_event(ord(c),0,keyeventf_keyup,0); end; 'A'..'Z': begin keybd_event(vk_Shift,0,0,0); keybd_event(ord(c),0,0,0); keybd_event(vk_Shift,0,keyeventf_keyup,0); keybd_event(ord(c),0,keyeventf_keyup,0); end; 'a'..'z': begin c:= upcase(c); keybd_event(ord(c),0,0,0); keybd_event(ord(c),0,keyeventf_keyup,0); end; else begin keybd_event(ord(c),0,0,0); keybd_event(ord(c),0,keyeventf_keyup,0); end; end; end; end; end; sleep(1000); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); sleep(500); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); sleep(1000); timer5.Enabled:=true; timer4.enabled:=false; end; end;
Delphi-Quellcode:
am anfang...wenn das bild NICHT sichtbar ist, soll gleich der nächste timer gestartet werden..
if invchecked2.Visible=false then
timer5.Enabled:=true; if invchecked2.visible=true then allerdings wird der timer immer wieder gestartet...ich hab nicht rausgefunden warum..vielleicht steht das
Delphi-Quellcode:
am ende auch ZU weit am ende und der befehl den timer zu disablen und den nächsten zu starten kommt gar nicht mehr zum zug?
timer5.Enabled:=true;
timer4.enabled:=false; über hilfe wäre ich dankbar nette grüße von rhodan |
Re: Timer startet immer neu obwohl disabled??
Setze einen Haltepunkt auf timer4enabled:=false und schaue, ob er jemals da ankommt.
Ich weiß jetzt nicht, ob das überhaupt möglich ist, aber vielleicht wird dein Timer4Timer-Ereignis schon immer wieder erneut aufgerufen, bevor es überhaupt fertig abgearbeitet ist ...? Grundsätzlich: Hast du es schon mal mit Haltepunkten und vor allem Einzelschrittmodus probiert? |
Re: Timer startet immer neu obwohl disabled??
wenn ich ehrlich bin habe ich noch nie mit haltepunkten gearbeitet bzw. sie benutzt...
was das ist kann ich könnte ich mir schon vorstellen aber wie wende ich sie an bzw. wie aktiviere ich einen haltepunkt für den timer? thx |
Re: Timer startet immer neu obwohl disabled??
einfach links neben die entsprechende zeile klicken. Dann erscheint dort ein roter Punkt, wenn du das programm jetzt aus der IDE startest, hält dein Programm an dem Punkt an. Wenn du mit dem Mauszeiger über die Variablen gehst, so erscheint der Wert der Variable als Hint.
Welche Frequenz hat denn dein Timer oben eingestellt ? |
Re: Timer startet immer neu obwohl disabled??
hmm...also ich hab den haltepunkt gesetzt, prog gestartet, im haltepunkt erschien dann ein kleiner grüner haken :-/ der timer ist auf 500ms
das witzige ist....den ersten der 20 timer führt er nur einmal aus wenn er selektiert ist, aber die anderen 19 macht er jeweils unendlich...das einzige weas sich im code ändert sind die edit nummern, die invchecks und die timer die ich enable bzw. disable :S |
Re: Timer startet immer neu obwohl disabled??
Zitat:
Zitat:
Setze den Timer mal auf 20 Sekunden oder so. Gruß |
Re: Timer startet immer neu obwohl disabled??
hmmm, das bringt auch nix....ist der timer interval nicht nur die pause die nach dem beenden des letzten timer befehls gewartet wird bis er wieder gestartet wird?
|
Re: Timer startet immer neu obwohl disabled??
Nein, interval heist, dass es alle 500 ms ausgeführt wird. Schau dir hierzu einfach mal die OH an.
Gruß |
Re: Timer startet immer neu obwohl disabled??
hmm, ich grad gemerkt das ich 17 "begin" aber 19 "end;" im text hab...oder werden "else" auch mit end; abgeschlossen?
kann es sein das die end; falsch positioniert sind? gruß rhodan |
Re: Timer startet immer neu obwohl disabled??
Die 2 zusätzlichen "end" stammen aus den beiden Case-Abfragen. Hättest du da 2 zu viel, würde es dir der Compiler schon melden. ;)
|
Re: Timer startet immer neu obwohl disabled??
Zitat:
Aber wenn die Anzahl deiner end's falsch wäre, dann würde sich dein Quelltext nicht Compilieren lassen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 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