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/)
-   -   Eingabe oder Tastendruck im Form pauschal abfragen (https://www.delphipraxis.net/186173-eingabe-oder-tastendruck-im-form-pauschal-abfragen.html)

khh 10. Aug 2015 15:38

Eingabe oder Tastendruck im Form pauschal abfragen
 
Hallo zusammen,

ich möchte ein geöffnetes Form nach einer gewissen Zeit per Timer schließen, wenn der User in dieser Zeit keine Eingabe vornimmt.
Gibt es ein Event, welches ich global abfragen kann, oder muss ich alle auf der Form befindlichen Bedienelemente einzeln behandeln?


Ich danke euch

mm1256 10. Aug 2015 15:52

AW: Eingabe oder Tastendruck im Form pauschal abfragen
 
Code:
TForm.KeyPreview := true;
und dann nach Belieben

TForm.OnKeyDown oder
TForm.OnKeyUp oder
TForm.OnKeyPressed

haentschman 10. Aug 2015 15:54

AW: Eingabe oder Tastendruck im Form pauschal abfragen
 
Hallo...:P

Deine Freunde sind FormKeyDown bzw. FormKeyPress in Verbindung mit KeyPreview = True;

khh 10. Aug 2015 16:31

AW: Eingabe oder Tastendruck im Form pauschal abfragen
 
ich danke euch,
hätte ich ja auch selbst drauf kommen können ;-)

Aviator 10. Aug 2015 23:05

AW: Eingabe oder Tastendruck im Form pauschal abfragen
 
Oder vielleicht auch hiermit: LastInputInfo
Hier noch ein Topic aus der DP, bei der auch schonmal jemand damit gearbeitet hat: Letzte Eingabe ermitteln

khh 11. Aug 2015 15:48

AW: Eingabe oder Tastendruck im Form pauschal abfragen
 
mh, keydown etc. funktioniert leider nicht, da die Buttons ja per Touchscreen, sprich Mausklick bedient werden.
Also doch jedes Element auf OnMousDown abfragen?

EDIT: LastInputInfo sieht gut aus, aber wo ist TLastInputInfo definiert ?

hoika 11. Aug 2015 16:00

AW: Eingabe oder Tastendruck im Form pauschal abfragen
 
Hallo,

die verlinkten Beispiele ist ein bisschen overdressed.

http://www.experts-exchange.com/Prog..._21838717.html
http://forum.codecall.net/topic/6014...-delphi-codes/

Aber das Stichwort ist Hook, es muss hier nat. nicht gleich ein systemweiter Hook per Dll sein,
es reicht auch ein App-Hook.

http://delphi.about.com/od/windowssh...board_hook.htm


Heiko

Aviator 11. Aug 2015 23:07

AW: Eingabe oder Tastendruck im Form pauschal abfragen
 
Wenn du die Unit Winapi.Windows eingebunden hast, sollte er das automatisch finden.

Zitat:

Zitat von hoika (Beitrag 1311857)
Hallo,

die verlinkten Beispiele ist ein bisschen overdressed.

Aber das Stichwort ist Hook [...]

Hooks werden nur so wie ich es weiß öfters von Virenscannern erkannt. Ob das jetzt bei diesem auch der Fall ist weiß ich nicht. Habe auch noch nie mit Hooks arbeiten müssen. TLastInputInfo ist eben relativ einfach zu verwenden und kann regelmäßig über einen TTimer abgefragt werden.

Hier nur ein kleines Beispiel wie ich es umgesetzt habe:
Delphi-Quellcode:
LastInputInfo.cbSize := SizeOf(TLastInputInfo);
if GetLastInputInfo(LastInputInfo) then begin
  if ((GetTickCount - LastInputInfo.dwTime) >= Cardinal(InactivityValue * 60000)) then begin
    DoLockDatabase(True); // Sperrt in meinem Fall die Datenbank
  end;
end;

khh 12. Aug 2015 11:47

AW: Eingabe oder Tastendruck im Form pauschal abfragen
 
danke, funktioniert aber unter Lazarus leider nicht

Nersgatt 12. Aug 2015 13:27

AW: Eingabe oder Tastendruck im Form pauschal abfragen
 
Ich habe das schon einmal mit einem lokalen Maus- und Tastaturhook gelöst. Das hat problemlos funktioniert und Virenscanner haben auch nicht gemeckert.
Ich würde das jederzeit dem KeyDown, etc. abfangen vorziehen.

BadenPower 12. Aug 2015 14:15

AW: Eingabe oder Tastendruck im Form pauschal abfragen
 
Zitat:

Zitat von khh (Beitrag 1311940)
danke, funktioniert aber unter Lazarus leider nicht

Was funktioniert unter Lazarus nicht?

Wieder einmal eine schöne Fehlerbeschreibung.

Der Code von Aviator auf jeden Fall kann es nicht sein, denn der funktioniert unter Lazarus.

khh 13. Aug 2015 08:34

AW: Eingabe oder Tastendruck im Form pauschal abfragen
 
wo ist TLastInputInfo definiert?
Ich finde das unter Lazarus nicht :-(

BadenPower 13. Aug 2015 13:07

AW: Eingabe oder Tastendruck im Form pauschal abfragen
 
Zitat:

Zitat von khh (Beitrag 1312009)
wo ist TLastInputInfo definiert?
Ich finde das unter Lazarus nicht :-(

Warum verweigern alle Fragesteller die Benutzung der F1-Taste?

Quelltext in den Editor eingeben TLastInputInfo markieren und danach F1 drücken.

30 Sekunden hat der Code-Browser, welcher durch Betätigen der F1-Taste gestartet wird die entsprechende Unit gefunden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz