AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Kein "FormMouseDown" während Arbeit in anderer Prozedur ?
Thema durchsuchen
Ansicht
Themen-Optionen

Kein "FormMouseDown" während Arbeit in anderer Prozedur ?

Ein Thema von letsfetz · begonnen am 10. Jun 2005 · letzter Beitrag vom 11. Jun 2005
Antwort Antwort
letsfetz

Registriert seit: 25. Mär 2005
Ort: Großraum Stuttgart
23 Beiträge
 
Delphi 7 Personal
 
#1

Kein "FormMouseDown" während Arbeit in anderer Pro

  Alt 10. Jun 2005, 15:28
Hi, ich bin ein EX- Basicprogrammierer und mittlerweile auf Delphi7 umgestiegen.
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...

Da ich daraus ein Bildschirmschoner proggen will (der eigentlich auch schon funktioniert),
hänge ich hier fest:

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

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
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Kein "FormMouseDown" während Arbeit in anderer

  Alt 10. Jun 2005, 15:29
Stichwort: Application.ProcessMessages einfügen, damit währen der lanandauernden Aktion Benutzerangeben entgegen genommen werden.
Altenative: Berechnung in Thread auslagern.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
letsfetz

Registriert seit: 25. Mär 2005
Ort: Großraum Stuttgart
23 Beiträge
 
Delphi 7 Personal
 
#3

Re: Kein "FormMouseDown" während Arbeit in anderer

  Alt 10. Jun 2005, 15:38
Zitat:
Stichwort: Application.ProcessMessages einfügen, damit währen der lanandauernden Aktion Benutzerangeben entgegen genommen werden.
OK, hört sich gut an... Wenn ich nun noch weiss wo ich das einfügen soll ?

In der rechnenden Prozedur ?
Oder weiter oben bei den Deklarationen ?

Dann bin ich auf dem Weg !
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Kein "FormMouseDown" während Arbeit in anderer

  Alt 10. Jun 2005, 15:39
Zitat von letsfetz:
OK, hört sich gut an... Wenn ich nun noch weiss wo ich das einfügen soll ?
In die rechnenden Prozedur ?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Marphy

Registriert seit: 24. Feb 2005
162 Beiträge
 
Delphi 7 Professional
 
#5

Re: Kein "FormMouseDown" während Arbeit in anderer

  Alt 10. Jun 2005, 21:44
Hallo ihr beiden,
Applications.ProcessMessages (Delphi) = DoEvents (VB)

Das sollte dir weiterhelfen

Gruß, Marco
Marco
Wo ein Wille ist, ist auch ein Weg. Aber wo ein Weg ist, ist nicht unbedingt auch ein Wille...
  Mit Zitat antworten Zitat
letsfetz

Registriert seit: 25. Mär 2005
Ort: Großraum Stuttgart
23 Beiträge
 
Delphi 7 Personal
 
#6

Re: Kein "FormMouseDown" während Arbeit in anderer

  Alt 11. Jun 2005, 05:44
Zitat von Marphy:
Hallo ihr beiden,
Applications.ProcessMessages (Delphi) = DoEvents (VB)

Das sollte dir weiterhelfen

Gruß, Marco
Danke schon mal, - ich habe "Applications.ProcessMessages" in die rechnende Schleife für
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: 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
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#7

Re: Kein "FormMouseDown" während Arbeit in anderer

  Alt 11. Jun 2005, 07:52
Das sollte eigentlich gehen, ich mache es bei einer Endlosschleife nicht anders . Hier mal der Aufbau in etwa:
Delphi-Quellcode:
procedure TForm1.Activate(...);
begin
  ...
  while IsRunning do
  begin
    ...
    Application.ProcessMessages;
  end;
end;

procedure TForm1.Paintbox321Click(...);
begin
  DoSomething;
end;
Ein Schleifendurchlauf dauert im Durchschnitt 7ms, DoSomething wird ohne sichtbare Verzögerung ausgeführt.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Kein "FormMouseDown" während Arbeit in anderer

  Alt 11. Jun 2005, 08:23
oder wie schon erwähnt die Berechnung in einen Thread auslagern.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#9

Re: Kein "FormMouseDown" während Arbeit in anderer

  Alt 11. Jun 2005, 09:22
Zitat von SirThornberry:
oder wie schon erwähnt die Berechnung in einen Thread auslagern.
Und ein Neuling in diesem Gebiet (jedenfalls in der Sprache Delphi) wird dazu hier ein Tutorial von Luckie finden
  Mit Zitat antworten Zitat
letsfetz

Registriert seit: 25. Mär 2005
Ort: Großraum Stuttgart
23 Beiträge
 
Delphi 7 Personal
 
#10

Re: Kein "FormMouseDown" während Arbeit in anderer

  Alt 11. Jun 2005, 11:45
Zitat von malo:
Zitat von SirThornberry:
oder wie schon erwähnt die Berechnung in einen Thread auslagern.
Und ein Neuling in diesem Gebiet (jedenfalls in der Sprache Delphi) wird dazu hier ein Tutorial von Luckie finden
So ! - Ich glaube mein Problem wurde erkannt !

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.

*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.
*mußnunselberlachen*

Ihr hört demnächst auf jeden Fall von mir... Und nochmals Danke für die heißen Tipps !

Gruß Micha
Michael
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz