![]() |
Re: OnIdle wird immer wieder ausgeführt
Yupp. Aber in dem Fall nicht, weil die Applikation den Fokus kriegt, sondern weil sie irgendwann mit der Abarbeitung des Klicks auf den OK-Button fertig ist. Aber natürlich mit dem selben Ergebnis.
|
Re: OnIdle wird immer wieder ausgeführt
Zitat:
Danke. |
Re: OnIdle wird immer wieder ausgeführt
Ich denke, du kommst mit dem OnIdle Event auf keinen grünen Zweig.
Mit dem Event OnMessage (wie oben vorgeschlagen) kannst du alles kontrollieren:
Delphi-Quellcode:
var
lastMsgTime : DWORD; procedure TForm1.HandleOnMessage(var Msg: TMsg; var Handled: Boolean); begin case Msg.message of WM_ACTIVATE, WM_ACTIVATEAPP, WM_CREATE, WM_SETFOCUS, WM_MOUSEWHEEL, WM_CHAR, WM_SYSCHAR, WM_RBUTTONDOWN, WM_LBUTTONDOWN, WM_MBUTTONDOWN, WM_MOVE, WM_MOVING: lastMsgTime := Msg.time; end; end; procedure TForm1.FormCreate(Sender: TObject); begin Application.OnMessage := HandleOnMessage; lastMsgTime := GetTickCount; end; // Timer feuert alle 500ms procedure TForm1.Timer1Timer(Sender: TObject); var x : DWORD; diff : DWORD; begin x := GetTickCount; diff := x - lastMsgTime; if diff > 10000 then // > 10 Sekunden Caption := 'ich schlafe jetzt in der TNA' else caption := IntToStr(diff)+ 'ms seit letzter Message'; end; |
Re: OnIdle wird immer wieder ausgeführt
das "HandleOnMessage" funktioniert zu meiner Zufriedenheit.
kann es jedoch sein, dass die Message WM_MOVE nicht zu mir ins Programm kommt? ich kann das Fenster auf dem Bildschirm rumschieben, wie ich will, die Zeit läuft aber weiter und irgendwas ist das Fenster in der TNA. gruessle |
Re: OnIdle wird immer wieder ausgeführt
Zitat:
Du kannst ja mal mit WM_WINDOWPOSCHANGED und/oder WM_WINDOWPOSCHANGING herumspielen. WM_SIZE gehört auch noch in die Liste. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:55 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-2025 by Thomas Breitkreuz