![]() |
Kein "FormMouseDown" während Arbeit in anderer Pro
Hi, ich bin ein EX- Basicprogrammierer und mittlerweile auf Delphi7 umgestiegen. :thumb:
Das klappt auch sehr gut ! - Mein erstes Fraktalprogramm funzt auch schon. Sieht super aus und wenn es fertig ist will ich es hier auch zeigen... Nun hab ich aber noch so´n paar kleinere Probleme... :gruebel: Da ich daraus ein Bildschirmschoner proggen will (der eigentlich auch schon funktioniert), hänge ich hier fest: :wall: Die Berechnung des Fraktales ist im vollen Gange... - Und dann wenn man die Maus klickt oder die Tastatur betätigt, sollte das Fenster sofort schließen. Dies tuts auch aaaaber: Erst nachdem das Fraktal fertiggerechnet hat...(und das kann dauern). :angel2: FormMouseDown habe ich als procedure mit im Formular. Wie gesagt... Während der rechnet kommt es nicht zum Abbruch (Application.Terminate;) Vermutlich habe ich nur einen kleinen Denkfehler gemacht... Wer gibt mir den entscheidenden tip ? Gruß Micha :spin2: |
Re: Kein "FormMouseDown" während Arbeit in anderer
Stichwort: Application.ProcessMessages einfügen, damit währen der lanandauernden Aktion Benutzerangeben entgegen genommen werden.
Altenative: Berechnung in Thread auslagern. |
Re: Kein "FormMouseDown" während Arbeit in anderer
Zitat:
In der rechnenden Prozedur ? Oder weiter oben bei den Deklarationen ? Dann bin ich auf dem Weg ! :thumb: |
Re: Kein "FormMouseDown" während Arbeit in anderer
Zitat:
|
Re: Kein "FormMouseDown" während Arbeit in anderer
Hallo ihr beiden, :-D
Applications.ProcessMessages (Delphi) = DoEvents (VB) Das sollte dir weiterhelfen :wink: Gruß, Marco |
Re: Kein "FormMouseDown" während Arbeit in anderer
Zitat:
das Fraktal eingefügt. Das Programm reagiert dennoch nicht auf Mausklick oder Tastatur. :( Es rechnet immer erst fertig (ca 3 min). Dann wird der Klick registriert und das Programm endet. Wenn ich nicht klicke rechnet es brav weiter (Bildschirm löschen und nächstes Fraktal). :) Noch was: Ich habe Applications.ProcessMessages in verschiedene Positionen der (3 in sich verschachtelten) Schleife eingebaut - Ohne Erfolg. Außer das die eh schon langsame Berechnung noch langsamer wird. Gibt es einen einfacheren Weg ? - Sonst werde ich halt mit einer IF-Abfrage irgend einen Tastendruck erkennen müssen. :| Noch was am Rande: :coder2: Das ist das beste und nettese Forum in welchen ich jemals rumgestöbert habe. 1000 Suchanfragen lieferten mir fast 1000 Lösungen und deswegen kann ich es nur weiterempfehlen. Danke, Micha |
Re: Kein "FormMouseDown" während Arbeit in anderer
Das sollte eigentlich gehen, ich mache es bei einer Endlosschleife nicht anders :gruebel: . Hier mal der Aufbau in etwa:
Delphi-Quellcode:
Ein Schleifendurchlauf dauert im Durchschnitt 7ms, DoSomething wird ohne sichtbare Verzögerung ausgeführt.
procedure TForm1.Activate(...);
begin ... while IsRunning do begin ... Application.ProcessMessages; end; end; procedure TForm1.Paintbox321Click(...); begin DoSomething; end; |
Re: Kein "FormMouseDown" während Arbeit in anderer
oder wie schon erwähnt die Berechnung in einen Thread auslagern.
|
Re: Kein "FormMouseDown" während Arbeit in anderer
|
Re: Kein "FormMouseDown" während Arbeit in anderer
Zitat:
Ich kenne mich in der Tat noch nicht mit Threads aus... Somit werde ich das Tutorial wie oben erwähnt durchackern. Es könnte die Lösung sein. Dazu brauch ich etwas Zeit. :xmas: *grins und schmunzel* -> Ich kann mir schon denken warum sich die Schleife nicht abbrechen lässt: Windows ist sooo intelligent, daß es erkennt wenn ein prima Code läuft - diesen dann auch nicht mehr beenden will. Es könnte ja sein das als nächstes ein Bluescreenprogramm gestartet wird. :bounce1: *mußnunselberlachen* Ihr hört demnächst auf jeden Fall von mir... Und nochmals Danke für die heißen Tipps ! Gruß Micha :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 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