Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 1 Button 2 ereignisse (https://www.delphipraxis.net/91118-1-button-2-ereignisse.html)

gekkorist 29. Apr 2007 23:37


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.

SirTwist 29. Apr 2007 23:45

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:
Timer.Enabled := not Timer.Enabled;
Das sollte so in etwa in die Richtung Deiner Frage gehen...

gekkorist 30. Apr 2007 00:11

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...

chaoslion 30. Apr 2007 00:34

Re: 1 Button 2 ereignisse
 
nimm doch de ProcessMessages-Prozedur zur Hilfe, in der Schleife :-D

Sunlight7 30. Apr 2007 00:43

Re: 1 Button 2 ereignisse
 
Zitat:

Zitat von gekkorist
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...

Moin!

Delphi-Quellcode:
timer1.Enabled := not Timer1.Enabled;
Entspricht
Delphi-Quellcode:
If timer.Enabled then
   Timer.Enabled:=False else
      Timer.Enabled:=True;
not kehrt den Boolwert einfach um, aus False mach True und andersrum ;)

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:

gekkorist 30. Apr 2007 00:54

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.

Sunlight7 30. Apr 2007 01:20

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.

gekkorist 30. Apr 2007 13:10

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

Maa83 3. Mai 2007 08:17

Re: 1 Button 2 ereignisse
 
wieso nicht einfach in der Schleife ein Application.ProcessMessage?

Delphi-Quellcode:
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;
geht natürlich auch mit repeat-Schleifen.

oder hab ich grad nen Denkfehler drin?

Light 3. Mai 2007 09:03

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

Sunlight7 3. Mai 2007 18:54

Re: 1 Button 2 ereignisse
 
[OT]
Es kommt halt darauf an, mit was, bzw. wie man die Lehrer ägert ;)
[/OT]

Zitat:

Zitat von Maa83
oder hab ich grad nen Denkfehler drin?

Jupp, es fehlt mindestens die Abfrage, ob die Delphi-Referenz durchsuchenApplication.Terminated wurde...

Maa83 4. Mai 2007 08:27

Re: 1 Button 2 ereignisse
 
das sollte eigentlich nur ein Denkansatz für gekkorist sein und nicht das komplette Programm...


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 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