Hallo, ich habe folgendes Problem:
Ein Fenster hat eine OnMouseMove, OnClick und eine OnKeyDown Prozedur. Alles funktioniert solange bis ich einmal ein anderes Programm in den Vordergrund rücke. Danach funktioniert bei meinem Fenster immernoch die OnMouseMove und die OnClick-Prozedur aber nicht mehr die OnKeyDown-Prozedur, selbst wenn ich das Fenster wieder in den Vordergrund rücke. Gibt es dafür eine Erklärung und Lösung?
OnKeyDown funktioniert nicht mehr
Re: OnKeyDown funktioniert nicht mehr
Hallo,
Tastaturereignisse empfängt immer nur das Fenster, dass aktuell den Fokus hat. Innerhalb einer Anwendung kann man bei Bedarf die Tastatureingaben an ein anderen Fenster weiterleiten, in dem man bspw. in Form2.Keydown Form1.Keydown aufruft und die Parameter einfach weiterleitet.
Anwendungsüberggreifend wird das schwieriger. Was genau wilst Du denn erreichen.
Stell Dir vor Du sitzt vor einem Dokument, der Text den Du schreibst landet aber in Excel...
Gruß, Andreas
Tastaturereignisse empfängt immer nur das Fenster, dass aktuell den Fokus hat. Innerhalb einer Anwendung kann man bei Bedarf die Tastatureingaben an ein anderen Fenster weiterleiten, in dem man bspw. in Form2.Keydown Form1.Keydown aufruft und die Parameter einfach weiterleitet.
Anwendungsüberggreifend wird das schwieriger. Was genau wilst Du denn erreichen.
Stell Dir vor Du sitzt vor einem Dokument, der Text den Du schreibst landet aber in Excel...
Gruß, Andreas
Re: OnKeyDown funktioniert nicht mehr
Bei mir ist es nur eine Anwendung mit Form1 und Form2. Form2 bedeckt den gesamten Bildschirm und soll mit der Escape Taste geschlossen werden können. Funktioniert auch, nur wenn ich z. B. mit Strg-Alt-Entf den Task Manager Aufrufe und danach das Fenster wieder anklicke, worauf das Fenster auch reagiert, sich wieder in den Vordergrund rückt, und die OnClick-Prozedur ausführt, reagiert es nicht mehr auf Escape. (Das Problem ist, dass es auf größeren Bildschirmen leichter den Fokus verlieren kann, weil es nicht den ganzen Bildschirm bedeckt.)andikad hat geschrieben:Hallo,
Tastaturereignisse empfängt immer nur das Fenster, dass aktuell den Fokus hat. Innerhalb einer Anwendung kann man bei Bedarf die Tastatureingaben an ein anderen Fenster weiterleiten, in dem man bspw. in Form2.Keydown Form1.Keydown aufruft und die Parameter einfach weiterleitet.
Anwendungsüberggreifend wird das schwieriger. Was genau wilst Du denn erreichen.
Stell Dir vor Du sitzt vor einem Dokument, der Text den Du schreibst landet aber in Excel...
-
- Beiträge: 6902
- Registriert: Do 2. Jan 2014, 17:21
- OS, Lazarus, FPC: Linux (die neusten Trunk)
- CPU-Target: 64Bit
- Wohnort: Schweiz
Re: OnKeyDown funktioniert nicht mehr
Passiert dies bei dir bei einem komplexen Project, oder auch bei einem minimal Beispiel ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot
Mit Java und C/C++ sehe ich rot
Re: OnKeyDown funktioniert nicht mehr
Problem gefunden: Auf der Form2 ist noch eine TrackBar, die bei abermaligem Aktivieren des Form wohl den Fokus bekommt ohne optische Kennzeichnung. Jedenfalls funktioniert jetzt alles nachdem ich auch das OnKeydown-Ereignis der Trackbar mit "close" verbunden habe.
-
- Beiträge: 286
- Registriert: Mi 16. Sep 2009, 14:15
- OS, Lazarus, FPC: Xubuntu 22.04 / x86_64_linux-gtk 2 / L 2.2.0 / FPC 3.2.2
Re: OnKeyDown funktioniert nicht mehr
Ja, so was habe ich auch mal gehabt. Es gibt da paar eigensinnige Komponenten (so sehe ich das jedenfalls), die bei beim Aufruf des Formulars/Registerseite etc. dann für sich den Fokus beanspruchen, also aktiv sind, und somit alle mit der Tastatur eingegeben Befehle abfangen. Besonders gemein ist dann auch noch, wenn es dann solche sind, die nicht mal grafisch anzeigen, dass die jetzt den Fokus haben. Hm... könnte aber auch sein, dass der Grund für das erhalten des Fokus auch Teils an etwas anderen liegt, als an der Komponente selbst ... ?!400kmh hat geschrieben:Problem gefunden: Auf der Form2 ist noch eine TrackBar, die bei abermaligem Aktivieren des Form wohl den Fokus bekommt ohne optische Kennzeichnung. Jedenfalls funktioniert jetzt alles nachdem ich auch das OnKeydown-Ereignis der Trackbar mit "close" verbunden habe.
Lazarus 2.2.0 / FP 3.2.4
-
- Beiträge: 168
- Registriert: Sa 8. Okt 2016, 08:38
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Polska
Re: OnKeyDown funktioniert nicht mehr
400kmh vielleicht sehe ich was falsch, aber wieso stelltst du die KeyPreview-Eigenschaft der Form nich auf an?
Jeder der sagt, ich könnte programmieren, der hat noch weniger Ahnung vom programmieren als ich!!!