Autor Beitrag
holgerbremen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 120



BeitragVerfasst: Mi 17.05.06 14:26 
Ich habe folgendes Problem. Ich habe eine MDI-Anwendung mit mehreren Childs und Dialogen. Ich möchte nun, dass wenn die Maus z.B. 10 Minuten nicht bewegt wird, ein Login-Fenster für die erneute Anmeldung erscheint.

Meine Idee wäre es, die OnMouseMove-Event in jedem Fenster abzufangen. Dies ist aber nervig und unschön.

Gibt es eine Möglichkeit, das OnMouseMove-Event im Mainform abzufangen. Oder hat jemand noch eine andere Idee, wie man sowas umsetzen kann?

Gruß Holger
DaKirsche
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 187

Win XP Pro, SuSe Linux 7.3 - 10.2, Win 2k3 Server, Win 2000, Win NT 4.0
Delphi 2006 Pro, Java, HTML, SQL, PHP, CSS
BeitragVerfasst: Mi 17.05.06 14:57 
kannst doch die Mausposition in Variablen einlesen und dann mit einem Timer nebenbei abfragen, ob sich die Maus bewegt hat oder eine Tast gedrückt wurde.
Bei Mausbewegung kannst du den TimerTag auf 0 setzen und von vorne beginnnen.

Das wäre jetzt meine Lösung...
holgerbremen Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 120



BeitragVerfasst: Mi 17.05.06 15:21 
So ähnlich mache ich jetzt schon. Ich habe einen Timer laufen, der immer resetet wird, wenn ich die Maus bewege.

Nur das Bewegen der Maus muss ich ja in jedem Fenster und dann noch in jedem Controll abfangen. Da habe ich ja nachher hunderte von Aufrufen, wo dann der Timer resetet wird.

Was ich aber möchte, wäre eine zentrale Stelle, wo ich OnMouseMove abfangen könnte, und das wäre dann im Mainform.

Ich erinnere mich noch dunkel an meine C++ Zeiten. Da konnte man im MDI-Mainform z.B. alle Tastendrücke abfangen, bevor diese ans Child-Form gesendet wurden. Sowas muss es doch auch in Delphi geben.

Gruß Holger
Christian R.
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 18.05.06 14:13 
Ich sitze gerade nicht an meinem Rechner, aber soviel ich weiß ...

... und verstehe, kannst Du Form.MouseMove nicht abfragen, wenn eine sichtbare Komponente im Weg ist. Das Problem hatte ich auch schon.

... gibt es eine globale Variable "Mouse" vom Typ TMouse. Mit dieser kannst Du die Position der Maus auf dem Bildschirm abfragen. Durch den Timer wie gehabt ... usw.
Christian R.
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 19.05.06 11:20 
Also mit der globalen "Mouse" geht es nicht. Mir fiel noch ein, dass man trotzdem ein Event braucht, um sie abzufragen, also wieder ein "OnMouseMove". Ich kenne in Delphi nur ein "KeyPreview" im Form - leider kein "MousePreview", was eigentlich sehr sinnvoll gewesen wäre.
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Mo 29.05.06 07:34 
Gib es denn keinen eleganteren Weg z.B. sperren mit HIlfe des Bildschirmschoners?
Weil neben Maus gibt es ja noch Tastatur oder ne Fernbedienung oder remote oder...

Da gibt es bei Tory einige Ansätze wo du mal schauen könntest: www.torry.net/quicks...g=idle&Title=Yes

Ich würde eine globale Variable nehmen und mich in die Messageverarbeitung einklinken.