AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu Application Processmessages

Ein Thema von iamjoosy · begonnen am 17. Dez 2003 · letzter Beitrag vom 17. Dez 2003
Antwort Antwort
iamjoosy

Registriert seit: 12. Nov 2003
53 Beiträge
 
#1

Frage zu Application Processmessages

  Alt 17. Dez 2003, 12:03
Hallo,

folgende Ausgangslage:

Ein Tlabel an Position 100,100

Eine OnMouseEnter Event mit folgendem Inhalt:

Delphi-Quellcode:
begin
  ShowMessage('Der Event ist angekommen !')
end;
Ein Tbutton mit folgendem OnClick-Event:

Delphi-Quellcode:
begin
  Mouse.CursorPos:=ClienttoScreen(Point(101,101));
end;
Bei Click auf Button, kein Problem: Die Message wird angezeigt!

Wenn in OnClick jetzt aber folgendes steht:

Delphi-Quellcode:
begin
  Mouse.CursorPos:=ClienttoScreen(Point(101,101));
  while true do
  begin
    Application.ProcessMessages;
  end;
end;
bewegt sich zwar der Cursor, aber der Event wird nicht ausgelöst!

Also meine Frage: Wieso

Hintergrund:
Im echten Programm steht natürlich nicht die Endlosschleife "while true", sondern heir wird in einer Schleife Daten "gepollt", und es soll entprechend der Daten (von einem Eyetracker ... aber das würde jetzt hier zu weit führen) der Cursor psoitioniert werden und aber auch Ereignisse ausgelöst werden.

[edit=sakura] Space in die Überschrift eingesetzt. Mfg, sakura[/edit]
  Mit Zitat antworten Zitat
iamjoosy

Registriert seit: 12. Nov 2003
53 Beiträge
 
#2

Re: Application.Processmessages Frage

  Alt 17. Dez 2003, 12:35
Ok, habe noch ein wenig rumprobiert, und wenn man statt

Application.ProcessMessages

Application.HandleMessage verwendet funktioniert es !

Also, kann mir jemand den Unterschied zwischen den beiden erklären ?
Wann verwende ich das eine, wann das andere ??
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Application.Processmessages Frage

  Alt 17. Dez 2003, 12:36
Hallo,
Application.ProcessMessages fragt die dem Prozess von Windows zugeteilelte Botschaftswarteschlange
ab. D.h. hier wird auf Botschaften von Windows reagiert. Der klickt mit das Maus wäre z.B. solch eine Botschaft. Bei CM_OnMouseEnter handelt es sich um eine Komponenten-Botschaft. Diese Botschaft
wird verarbeitet, wenn NICHT die Windows-Botschaftswarteschlange abgearbeitet wird.
Dies kann nachvollzogen werden, wenn in der Unit Forms nach die Begriffen Idle, DoMouseIdle und
HandleMessage gesucht wird.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Application.Processmessages Frage

  Alt 17. Dez 2003, 12:38
Hallo,
den Unterschied zwischen HandleMessage und ProcessMessages findet man in der Delphi-Hilfe
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Application.Processmessages Frage

  Alt 17. Dez 2003, 12:39
Hallo,
grundsätzlich solltest Du das Pollen aber in einen eigenen Thread auslagern.
  Mit Zitat antworten Zitat
iamjoosy

Registriert seit: 12. Nov 2003
53 Beiträge
 
#6

Re: Application.Processmessages Frage

  Alt 17. Dez 2003, 12:55
Hi Jens, vielen Dank für deine Antwort !

In DH habe ich das schon nachgeschaut, fand das aber nicht so aussagekräftig wie deine Erklärung (Lob).

Dass man das Pollen in einen eigenen Thread auslagern sollte habe ich mir schon fast gedacht. Da ich allerdings noch nie mit Threads gearbeitet habe muss ich mich wohl mal in dieses Thema einarbeiten. Soweit ich weiss hat hier jemand ein Turorial dazu geschrieben ... werde das mal durcharbeiten und dann bestimmt mit einer Menge Fragen kommen.

Nochmals Danke Jens
  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 22:05 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