![]() |
1 Button 2 ereignisse
Hallo, ich überlege und probier schon ganze Zeit.. es will aber nicht klappen..
Also meine Frage: Ich habe ein Button, wenn ich ihn einmal drücke wird eine schleife begonnen... drück ich den GLEICHEN button noch einmal, hört die schleife auf! Ich weiß nicht welche funktion ausgibt ob der Button gedrückt ist/wurde oder nicht. danke schonmal im vorraus. |
Re: 1 Button 2 ereignisse
Das klappt so nicht, weil Du den Button erst dann wieder drücken kannst, wenn die Schleife zu Ende ist.
Beim Drücken eines Buttons wird die damit verbundenen Ereignisroutine aufgerufen, das OnClick-Event. Solange diese Routine ausgeführt wird, ist die gesamte Oberfläche nicht bedienbar. Was willst Du denn in Deiner Schleife machen? Vielleicht hilft Dir ein Timer weiter, der z.B. alle 200ms aufgerufen wird und dann jeweils einen Schleifendurchlauf erledigt. Den Timer kontrollierst Du dann im OnClick-Ereignis Deines Buttons:
Delphi-Quellcode:
Das sollte so in etwa in die Richtung Deiner Frage gehen...
Timer.Enabled := not Timer.Enabled;
|
Re: 1 Button 2 ereignisse
also, ich habe da was was immer punktweise den desktop einfärbt... was aber wenn ich 1 mal den Knopf drücke nie mehr endet... ausser wenn ich das begrenze.. aber hätte ja sein koennen das man zB ein Bild erstellt, wenn man ein mal drückt, und wenn man nochmal drückt es wieder löscht.
__ So einfach hätte ich das nicht gemacht mit den Timer... das das überhaupt geht timer1.Enabled := not Timer1.Enabled ; timer1.an := nicht timer1.an; versteh ich aber nicht kann mir das mal einer erklären O_o __ Das mit den Timer is mir bissel zu langsam, in der schleife macht er das richtig schnell aber der timer braucht ja ewig um immer ein pixel einzufärben... |
Re: 1 Button 2 ereignisse
nimm doch de ProcessMessages-Prozedur zur Hilfe, in der Schleife :-D
|
Re: 1 Button 2 ereignisse
Zitat:
Delphi-Quellcode:
Entspricht
timer1.Enabled := not Timer1.Enabled;
Delphi-Quellcode:
not kehrt den Boolwert einfach um, aus False mach True und andersrum ;)
If timer.Enabled then
Timer.Enabled:=False else Timer.Enabled:=True; Wenn Dir der Timer zu langsam ist, versuche mal das Interval auf 10 zu setzen ;) Grüße! PS: Mit Application.ProcessMessages wre ich da vorsichtig, wenn Du im QT n Fehler hast kannst Du mehrfach in der Schleife landen, wenn einer n paar mal auf den Button klickt :shock: |
Re: 1 Button 2 ereignisse
ich kann ja erlich sein.. das was ich mache is um meinen info lehrer bissel zu ärgern .. ^^
Der weiß aber von wem es kommt, da wird der Bildschirm Punkt für Punkt in eine Farbe gemacht, Komplett, aber beim timer, egal ob auf 10 geht das sehr langsam. aber in ner Repeat schleife geht das saus schnell, und man bekommt schon bissel bange.D.. naja egalIch werde jetzt müde, gute nacht @all. |
Re: 1 Button 2 ereignisse
Info Lehrer ärgern, da werden Erinnerungen wach... ^^
Du kannst ja im Timer einen Kompletten Zyklus durchlaufen, anstatt jedesmal nur einen einzelnen Pixel zu ändern. |
Re: 1 Button 2 ereignisse
Nagut, ich probiere es mal.. und Infolehrer kann man es nicht nennen :D Er weiß wie der rechner angeht und man Delphi startet, wenn der sein schlaues Buch nicht hätte würde er Total versagen :D
|
Re: 1 Button 2 ereignisse
wieso nicht einfach in der Schleife ein Application.ProcessMessage?
Delphi-Quellcode:
geht natürlich auch mit repeat-Schleifen.
var bMachWeiterDuArsch : Boolean;
procedure formcreate... begin bMachWeiterDuArsch := False; end; procedure Button1Click(Sender : TObject); begin bMachWeiterDuArsch := not bMachWeiterDuArsch; while bMachWeiterDuArsch do //Als Alternativbedingung natürlich das Ende der Punkte begin ZeichnePunkt(PosX,PosY); Application.ProcessMessage; end; end; oder hab ich grad nen Denkfehler drin? |
Re: 1 Button 2 ereignisse
Hi Ihr,
ich leider nur schlechte Erfahrungen mit Info-Lehrer Ärgern gemacht^^ - zwei aus der Gruppe waren nen halbes Schuljahr vom unterricht ausgeschlossen worden weil sie meinten nen so nen illegales Trojaner dingsbums zum fernsteuern von pcs auf dem lehrerpc installieren zu müssen... Selbst dran schuld... und mich mochte er nicht mehr nachdem ich (war ja mit ihm abgesprochen ) die HTML Thematik unterrichtet hatte - er konnte nicht ertragen das mir die Gruppe besser zugehört hat als ihm *duck* Back To Topic *G* : öhm eigentlich brauchst du doch nur eine Procedure die Unabhängig von allem anderen die Schleife ausführt?! Und dann kannst du ja einfach ne globale Variable Definieren mit der du dann entscheidest ob oder ob nicht der Bildschirm gefärbt wird oder? Leuchtende Grüße Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 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