AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tasten global "abfangen"

Ein Thema von d.adams · begonnen am 12. Apr 2023 · letzter Beitrag vom 6. Jul 2023
Antwort Antwort
d.adams

Registriert seit: 2. Apr 2023
22 Beiträge
 
#1

Tasten global "abfangen"

  Alt 12. Apr 2023, 19:48
Hallo,

ich muss eine Anwendung etwas bedienerfreundlicher gestalten - die Erschaffer haben sich leider nicht immer an den Guide gehalten. Das System bietet diverse Shortcuts an die aus jedem Formular funktionieren sollten.

Ich würde nun gerne Tastenkürzel oder F-Tasten abfragen (abfangen) und zwar so, dass ich nicht in jedes Formular muss. Bspw. ruft die Taste F8 immer ein bestimmtes Formular auf. Dies wird in jedem Formular "OnKeyPress" behandelt. Das würde ich gerne einmalig und zentral behandeln. Geht das und wenn ja wie?

Gruß
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Tasten global "abfangen"

  Alt 12. Apr 2023, 21:44
In den OnKeyPress/OnKeyDown aller Forms eine globale Funktion aufrufen, welche die übergreifende Behandlung ausführt.

Dafür kann man seine Forms auch ableiten/vererben und das Verhalten ins virtual KeyDown/KeyPress des gemeinsamen Vorfahren einbauen.

oder TApplicationEvents.OnMesssage
$2B or not $2B
  Mit Zitat antworten Zitat
d.adams

Registriert seit: 2. Apr 2023
22 Beiträge
 
#3

AW: Tasten global "abfangen"

  Alt 13. Apr 2023, 05:04
In den OnKeyPress/OnKeyDown aller Forms eine globale Funktion aufrufen, welche die übergreifende Behandlung ausführt.

Dafür kann man seine Forms auch ableiten/vererben und das Verhalten ins virtual KeyDown/KeyPress des gemeinsamen Vorfahren einbauen.

oder TApplicationEvents.OnMesssage
TApplicationEvents.OnMesssage....

nie von gelesen. Wie nutzt man das?
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.456 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Tasten global "abfangen"

  Alt 13. Apr 2023, 07:02
https://www.google.com/search?client...nts.OnMesssage
SCNR
  Mit Zitat antworten Zitat
d.adams

Registriert seit: 2. Apr 2023
22 Beiträge
 
#5

AW: Tasten global "abfangen"

  Alt 21. Apr 2023, 17:26
danke
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

AW: Tasten global "abfangen"

  Alt 21. Apr 2023, 18:32
Und da dann MSDN-Library durchsuchenWM_KEYUP, WM_KEYDOWN usw.

TApplicationEvents.On... ist die praktischere Variante des alten Application.On...
$2B or not $2B
  Mit Zitat antworten Zitat
Alt 6. Jul 2023, 03:43     Erstellt von photosulky
Dieser Beitrag wurde von TBx gelöscht. - Grund: Verdacht auf SPAM und den damit verbundenen verschwenderischen Umgang von wertvollen Bits und Bytes
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Tasten global "abfangen"

  Alt 6. Jul 2023, 10:07
Nichts gegen die vorigen Vorschläge, dennoch zeig ich mal wie man es nur einmal behandeln könnte, dazu musst Du die .dpr datei modifizieren.
Delphi-Quellcode:
program Project12;

uses
  Winapi.Windows,
  Winapi.MMSystem,
  Vcl.Forms,
  Unit12 in 'Unit12.pas{Form12},
  Unit13 in 'Unit13.pas{Form13};

{$R *.res}

// hotkey behandlung
procedure HotkeyTimer(TimerID, Msg: Uint; dwUser, dw1, dw2: DWord); pascal;
begin
  if ((GetKeyState(VK_F8) and (1 shl 31)) <> 0) then // VK_F8 wird in diesem Beispiel genutzt um ein Formular anzuzeigen
    Form13.Show;
end;

var
  HID: Integer;
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm12, Form12);
  Application.CreateForm(TForm13, Form13);
  // hotkey installieren
  HID := TimeSetEvent(10, 0, @HotkeyTimer, 0, TIME_PERIODIC);
  Application.Run;
  // hotkey entfernen
  TimeKillEvent(HID);
end.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

AW: Tasten global "abfangen"

  Alt 6. Jul 2023, 10:34
Zitat von timeSetEvent:
Note This function is obsolete. New applications should use CreateTimerQueueTimer to create a timer-queue timer.


PS: Ein MultimediaTimer, der in einem eigenen Thread läuft.
$2B or not $2B

Geändert von himitsu ( 6. Jul 2023 um 10:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Tasten global "abfangen"

  Alt 6. Jul 2023, 12:03
Zitat von timeSetEvent:
Note This function is obsolete. New applications should use CreateTimerQueueTimer to create a timer-queue timer.
Ach, wäre es nicht schön wenn die bei Emba das auch in den Headern einem mitteilen könnten
Ich hatte es nicht auf aktualität geprüft, weiß nur das es seit Jahren gut läuft
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

AW: Tasten global "abfangen"

  Alt 6. Jul 2023, 13:06
Per se wäre es möglich.

Delphi-Referenz durchsuchendeprecated
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 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