Discussion:
Warten bis Applikation idle
(zu alt für eine Antwort)
Matthias Frey
2015-01-26 16:54:31 UTC
Permalink
Hallo,
für eine Testautomatisierung würde ich gerne wissen wann die Applikation
fertig ist mit den gerade anstehenden Aktionen. Ich ändere also z.B. den
Wert eines Feldes und die anderen Felder werden nachgerechnet, ggf.
sichtbar oder unsichtbar, etc.
Wie stelle ich das fest?

Im Moment versuche ich es so:

Mittels "PeekMessage(msg, 0, wm_Paint, wm_Paint, PM_NOREMOVE)" frage
ich ab ob noch etwas zu malen ist. Ich gehe davon aus, dass die wm_Paint
immer die letzte Botschaft ist die abgearbeitet wird.

Für den akuten Fall funktioniert das recht gut. Allerdings habe ich
Zweifel ob das immer gut ist. Gibt es brauchbare Alternativen?

Matthias
Peter Below (TeamB)
2015-01-26 18:58:22 UTC
Permalink
Post by Matthias Frey
Hallo,
für eine Testautomatisierung würde ich gerne wissen wann die
Applikation fertig ist mit den gerade anstehenden Aktionen. Ich
ändere also z.B. den Wert eines Feldes und die anderen Felder werden
nachgerechnet, ggf. sichtbar oder unsichtbar, etc.
Wie stelle ich das fest?
Mittels "PeekMessage(msg, 0, wm_Paint, wm_Paint, PM_NOREMOVE)" frage
ich ab ob noch etwas zu malen ist. Ich gehe davon aus, dass die
wm_Paint immer die letzte Botschaft ist die abgearbeitet wird.
Für den akuten Fall funktioniert das recht gut. Allerdings habe ich
Zweifel ob das immer gut ist. Gibt es brauchbare Alternativen?
Application.OnIdle könnte nützlich sein.
--
Peter Below
Matthias Frey
2015-01-27 07:48:20 UTC
Permalink
Post by Peter Below (TeamB)
Post by Matthias Frey
Für den akuten Fall funktioniert das recht gut. Allerdings habe ich
Zweifel ob das immer gut ist. Gibt es brauchbare Alternativen?
Application.OnIdle könnte nützlich sein.
Danke. OnIdle ist ein Event. Gibt es auch das Gegenteil?
Wenn die Testautomatisierung die Applikation fragt muss
ich ja einen Zustand haben. Ich könnte mit OnIdle den
zustand "Ready" setzen. Aber irgendwann muss der Zustand
ja auch wieder zurückgesetzt werden.

In procedure TApplication.HandleMessage; wird Idle aufgerufen.
In TApplication.ProcessMessage kommt auch ein PeekMessage
zum Einsatz. Das bringt mich auf die Idee gar nicht auf
wm_Paint, sondern auf alle Botschaften abzufragen.

Matthias
Peter Below (TeamB)
2015-01-27 19:12:09 UTC
Permalink
Post by Matthias Frey
Post by Peter Below (TeamB)
Post by Matthias Frey
Für den akuten Fall funktioniert das recht gut. Allerdings habe
ich Zweifel ob das immer gut ist. Gibt es brauchbare Alternativen?
Application.OnIdle könnte nützlich sein.
Danke. OnIdle ist ein Event. Gibt es auch das Gegenteil?
Wenn die Testautomatisierung die Applikation fragt muss
ich ja einen Zustand haben.
I dachte eher, das die Testautomatisierung in OnIdle den Zustand der
Anwendung abfragt. Wenn er dergestalt ist, das der nächste Input
generiert werden muss, kann man das auch von da anstossen.
--
Peter Below (TeamB)
Loading...