Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Wie funktioniert Application.ProcessMessages? (https://www.delphipraxis.net/87595-wie-funktioniert-application-processmessages.html)

DelphiManiac 2. Mär 2007 18:14


Wie funktioniert Application.ProcessMessages?
 
Hallo,

ich habe ein kleine Verständnisfrage:

Wenn ich in einem Ablauf (der sehr lange dauert) immer mal wieder
Delphi-Quellcode:
Application.ProcessMessages;
aufrufe, dann erreiche ich ja, dass die Anwendung auf Windows-Messages reagieren kann und sich neu zeichnet und auf Events
reagieren kann.
Hier jetzt meine Frage, angenommen ich habe einen Ablauf und rufe ProcessMessages auf, dann wird ja sofort alle Windows Nachrichten abgearbeitet. Wenn ich nun ein OnMouseClick Event irgendeiner Komponente definiert habe und dann ein bestimmten Quellcode bereich abarbeite, dann wird ja erst all das abgearbeitet, bis es die Nachrichtenschleife leer ist oder?
Erst dann geht es doch nach Application.ProcessMessages weiter oder?????

Danke euch

shmia 2. Mär 2007 18:37

Re: Wie funktioniert Application.ProcessMessages?
 
Zitat:

Zitat von DelphiManiac
Wenn ich nun ein OnMouseClick Event irgendeiner Komponente definiert habe und dann ein bestimmten Quellcode bereich abarbeite, dann wird ja erst all das abgearbeitet, bis es die Nachrichtenschleife leer ist oder?
Erst dann geht es doch nach Application.ProcessMessages weiter oder?????

Richtig!
Deshalb sollte man alle Menues, Buttons und Actions sperren bis der Job fertig ist.
Am Besten fährt man, wenn man Aktions benützt; das hilft bei der Organisation.
Man braucht einen Try..Finally Schutzblock, damit nach einer Exception das Programm nicht unbedienbar wird:
Delphi-Quellcode:
procedure TForm1.ActionDoWorkExecute(...);
begin
   ActionDoWork.Enabled := False;
   try
      TueDieLangeUndSchwereArbeit;
   finally
      ActionDoWork.Enabled := True;
   end;
end;

DelphiManiac 3. Mär 2007 09:31

Re: Wie funktioniert Application.ProcessMessages?
 
@shmia:

Hi danke für deine Antwort, du schreibst von Actions,
wie und was sind den genau Actions?
Habe es schon in mehreren Zusammenhängen gelesen...

Gruß
DelphiManiac

shmia 5. Mär 2007 10:44

Re: Wie funktioniert Application.ProcessMessages?
 
Zitat:

Zitat von DelphiManiac
wie und was sind den genau Actions?

Actions gibt es erst ab Delphi 5 (oder war's D4 ?).
Actions werden mit der Komponente TActionList (auf Palettenseite "Standard") angelegt.
Actions sind eine Art Zwischenhändler. Man kann z.B. eine Action gleichzeitig mit einem Memüpunkt und einem Button verknüpfen. Jede Änderung an den Properties Caption, Enabled oder Visible wird sich sofort auf die verknüpften Controls aus. Mehr dazu in der OH.


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