![]() |
Frage zu Application Processmessages
Hallo,
folgende Ausgangslage: Ein Tlabel an Position 100,100 Eine OnMouseEnter Event mit folgendem Inhalt:
Delphi-Quellcode:
Ein Tbutton mit folgendem OnClick-Event:
begin
ShowMessage('Der Event ist angekommen !') end;
Delphi-Quellcode:
Bei Click auf Button, kein Problem: Die Message wird angezeigt!
begin
Mouse.CursorPos:=ClienttoScreen(Point(101,101)); end; Wenn in OnClick jetzt aber folgendes steht:
Delphi-Quellcode:
bewegt sich zwar der Cursor, aber der Event wird nicht ausgelöst!
begin
Mouse.CursorPos:=ClienttoScreen(Point(101,101)); while true do begin Application.ProcessMessages; end; end; 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] |
Re: Application.Processmessages Frage
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 ?? |
Re: Application.Processmessages Frage
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. |
Re: Application.Processmessages Frage
Hallo,
den Unterschied zwischen HandleMessage und ProcessMessages findet man in der Delphi-Hilfe |
Re: Application.Processmessages Frage
Hallo,
grundsätzlich solltest Du das Pollen aber in einen eigenen Thread auslagern. |
Re: Application.Processmessages Frage
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 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 by Thomas Breitkreuz