Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Tasten undabhänig vom Focus abfangen (https://www.delphipraxis.net/51291-tasten-undabhaenig-vom-focus-abfangen.html)

daniel8520 9. Aug 2005 21:34


Tasten undabhänig vom Focus abfangen
 
Hallo,

ich hab jetzt schon im Forum gesucht, aber irgendwie war nie das richtige dabei. Ich beschreib euch am besten mal, was ich möchte:
Ich möchte, dass z.B. bei drücken von F5 eine ganz bestimmt Funktion ausgeführt wird. Nun geht das ja nicht im OnKeyPress vom Formular, da selbiges es ja nich wahrnimmt, wenn z.B. ein Edit den Focus hat.
Was ich also bräuchte, wäre eine Funktion die gloabl Tasten abfängt. Ich hatte da auch schon etwas gefunden, nur war das wieder etwas zu global. Es sollte nämlich nicht Fensterübergreifend funktionieren, da ich in einem anderen Fenster z.B. F5 für eine ganz anderer Funktion nutzen möchte.

Könnt ihr mir helfen, oder habt ihr mein Problem überthaupt verstanden?


Vielen Dank für eurer Antworten im Vorraus.

Jelly 9. Aug 2005 21:37

Re: Tasten undabhänig vom Focus abfangen
 
Du könntest eine Actionlist einsetzen, und eine Action mit dem ShortCut F5 erstellen. Die Action funktioniert nur in der Form.

daniel8520 9. Aug 2005 21:39

Re: Tasten undabhänig vom Focus abfangen
 
Ist ne echt gute Idee!
Danke!

SirThornberry 9. Aug 2005 21:39

Re: Tasten undabhänig vom Focus abfangen
 
du musst "KeyPreview" vom Formular auf True setzen, dann bekommst du auch wenn der Focus in einem Edit ist dort das OnKeyPress ausgelöst

freak24 9. Aug 2005 21:42

Re: Tasten undabhänig vom Focus abfangen
 
Einfacher wäre es doch die KeyPreview-Eigenschaft aus True zu setzen. :gruebel:

[Edit]Wo war der Kasten???[/Edit]

daniel8520 9. Aug 2005 21:44

Re: Tasten undabhänig vom Focus abfangen
 
Hey, cool!

Ich dachte echt, wenn ein Objekt den Focus hat, kann es das Formular nich erkennen.


Vielen Dank an euch!

:dp:

Jelly 9. Aug 2005 22:05

Re: Tasten undabhänig vom Focus abfangen
 
Zitat:

Zitat von freak24
Einfacher wäre es doch die KeyPreview-Eigenschaft aus True zu setzen. :gruebel:

F5 wird im OnKeyPress jedoch nicht abgefangen. Ich tendiere weiterhin für eine TAction.

daniel8520 9. Aug 2005 22:07

Re: Tasten undabhänig vom Focus abfangen
 
Zitat:

Zitat von Jelly
Zitat:

Zitat von freak24
Einfacher wäre es doch die KeyPreview-Eigenschaft aus True zu setzen. :gruebel:

F5 wird im OnKeyPress jedoch nicht abgefangen. Ich tendiere weiterhin für eine TAction.

Stimmt!

Alternativ hab ich jetzt OnKeyDown genommen. Spielt keine Rolle!

marabu 10. Aug 2005 06:25

Re: Tasten undabhänig vom Focus abfangen
 
Hallo Daniel,

Zitat:

Zitat von daniel8520
Es sollte nämlich nicht Fensterübergreifend funktionieren, da ich in einem anderen Fenster z.B. F5 für eine ganz anderer Funktion nutzen möchte.

du wirst das vielleicht nicht gerne lesen, aber in jedem Windows-Programm sollte die F5-Taste eine sofortige Aktualisierung der aktuellen Ansicht auslösen. Wenn du nur für dich selbst und zum Spaß programmierst, kannst du natürlich machen was du willst. Wenn dein Programm jemals auf einem fremden Rechner eingestzt werden soll, dann solltest du dich über die von Windows verwendeten shortcuts informieren. Das Schlüsselkonzept von Windows GUI Anwendungen schlechthin ist die einheitliche Benutzerschnittstelle. Wer mehr als ein Programm regelmäßig benutzt, der wird danach trachten, Programme, die dieses Konzept nicht umsetzen, durch gleichwertige konforme Programme zu ersetzen.

Wenn du deinem Programm einen professionellen Anstrich geben willst, dann definiere eine Action "Refresh" und weise diese mit dem shortcut F5 dem Hauptmenüpunkt "Ansicht:Aktualisieren" zu. Oder vergiss einfach was ich geschrieben habe.

Grüße vom marabu

PS: Trotz Standard konfigurierbare shortcuts machen insofern Sinn, dass deine Anwendung auch in Umgebungen integriert werden kann, die überwiegend keine "well behaved programs" aufweisen.

daniel8520 10. Aug 2005 11:17

Re: Tasten undabhänig vom Focus abfangen
 
@marabu

Leuchtet mir total ein, was du schreibst. Klar macht es Sinn bestimmten Funktionen in verschiedener Software durch den gleichen ShortCut erreichbar zu machen.
Vielleicht beschreib ich dir die Software kurz, damit du siehst, das eine Refresh-Aktion oder ähnliche ShortCuts keinen Sinn machen.
Die Software besteht aus einer Kundendatenbank, einer Produktdatenbank, und verbindet diese beiden dann schließlich in einer Bestelldatenbank. Ich schreibe die Software deshalb, weil wir im nächsten Schuljahr an unserer Schule einen Online-Shop eröffnen wollen. Meine Software soll dann quasi die Buchhaltung erleichtern. Um die Buchhaltung zu erleichetern, ist es, imho, wichtig, dass jede Funktion möglichst schnell erreichbar ist. So habe ich im MainForm z.B. die Fuktionen "Neuer Kunde", "Neues Produkt", "Neue Bestellung". Wenn ich über Schnelligkeit spreche, meine ich damit, dass der Benutzer, der u.U. auch ich selbst sein werde, möglichst wenig seine Hand von Tastur zur Maus bzw. umgekehrt bewegen muss. Also, belege ich die o.g. Funktionen mit ShortCuts.
Eine Refresh-Aktion, um mal beim Besipiel F5 zu bleiben, macht wirklich keinen Sinn, da hier nicht aktualisiert werden kann.

Also dann, man liest sich!

Treffnix 10. Aug 2005 11:33

Re: Tasten undabhänig vom Focus abfangen
 
Zitat:

Zitat von marabu
aber in jedem Windows-Programm sollte die F5-Taste eine sofortige Aktualisierung der aktuellen Ansicht auslösen

:gruebel: Wer sagtn das? IE, Word, Excel, Delphi, Profiler und Query-Analyzer sind die Programme, die ich derzeit aufhab. Und der IE ist der einzige von denen, der auf F5 refresht. Gut. Beim Query-Analyzer könnte man das bei nem Select evtl. als Refresh deuten.

marabu 10. Aug 2005 11:43

Re: Tasten undabhänig vom Focus abfangen
 
Hallo Daniel,

vielleicht hast du bei Refresh eine falsche Assoziation. Wenn deine Datenbank-Anwendung mehrplatzfähig ist, dann gehört auf jedes Primärfenster eine Refresh-Funktion zum Abgleichen der Anzeige mit dem externen Speicherzustand. Man nennt das "best practice" oder "de facto Standard".

Deine Gedanken zur Benutzerschnittstelle deines Programms sind goldrichtig. Die Zahl der Tastenanschläge bzw. Mausaktionen zur Abwicklung eines Vorgangs ist bei professioneller Software tatsächlich ein Gütemerkmal. Wenn du jetzt noch alle semantischen Konflikte vermeidest (damit meine ich die Verknüpfung eines ShortCut, der unter Windows bereits eine abstrakte Funktion hat, mit einer Anwendungsfunktion), dann wird das ein gutes Programm.

Ich wünsche dir viel Erfolg bei deinem Projekt.

marabu

daniel8520 10. Aug 2005 11:47

Re: Tasten undabhänig vom Focus abfangen
 
Zitat:

Zitat von marabu
Hallo Daniel,

vielleicht hast du bei Refresh eine falsche Assoziation. Wenn deine Datenbank-Anwendung mehrplatzfähig ist, dann gehört auf jedes Primärfenster eine Refresh-Funktion zum Abgleichen der Anzeige mit dem externen Speicherzustand. Man nennt das "best practice" oder "de facto Standard".

Deine Gedanken zur Benutzerschnittstelle deines Programms sind goldrichtig. Die Zahl der Tastenanschläge bzw. Mausaktionen zur Abwicklung eines Vorgangs ist bei professioneller Software tatsächlich ein Gütemerkmal. Wenn du jetzt noch alle semantischen Konflikte vermeidest (damit meine ich die Verknüpfung eines ShortCut, der unter Windows bereits eine abstrakte Funktion hat, mit einer Anwendungsfunktion), dann wird das ein gutes Programm.

Ich wünsche dir viel Erfolg bei deinem Projekt.

marabu

Ich werd mein Bestes geben! :zwinker:

marabu 16. Aug 2005 08:28

Re: Tasten undabhänig vom Focus abfangen
 
Zitat:

Zitat von Treffnix
Zitat:

Zitat von marabu
aber in jedem Windows-Programm sollte die F5-Taste eine sofortige Aktualisierung der aktuellen Ansicht auslösen

:gruebel: Wer sagtn das? IE, Word, Excel, Delphi, Profiler und Query-Analyzer sind die Programme, die ich derzeit aufhab. Und der IE ist der einzige von denen, der auf F5 refresht. Gut. Beim Query-Analyzer könnte man das bei nem Select evtl. als Refresh deuten.

Sorry, aber diese Frage von dir hatte ich gar nicht gesehen. Das grafische Konzept von Windows stammt ja von Xerox, und wurde von Apple und Microsoft dort abgekupfert. Das Bedienkonzept (SAA/CUA) für Windows wurde aber in enger Zusammenarbeit mit IBM für OS/2 entwickelt und aus dieser Zeit stammen die style guides. Speziell in der IBM-Bibel "Object-Oriented Interface Design" wurde festgelegt, warum und wann eine Refresh-Aktion benötigt wird und in den style guide Adaptionen von Microsoft wurde der shortcut F5 zugeordnet.

Dass MS-Word die Refresh-Aktion nicht verwendet, ist leicht erklärbar: es existieren keine externen Speicherzustände, die mit Bildschirmobjekten synchronisiert werden müssten. Das ganze Dokument ist im Hauptspeicher. Genauso bei Excel.

Klassische Beispiele mit Refresh-Funktionalität sind DB-Anwendungen und last-not-least die Shell. Hier werden Tupel oder shell objects durch visuelle Objekte repräsentiert, die speziell in einer Mehrbenutzerumgebung über kurz oder lang nicht mehr synchron sind.

Alles klar?

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 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