AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit GetKeyNameText

Ein Thema von Chris P · begonnen am 11. Mai 2004 · letzter Beitrag vom 11. Mai 2004
Antwort Antwort
Seite 1 von 2  1 2      
Chris P

Registriert seit: 8. Mär 2004
230 Beiträge
 
Delphi 7 Enterprise
 
#1

Problem mit GetKeyNameText

  Alt 11. Mai 2004, 09:05
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var c: array[byte] of char;
begin
   getkeynametext(24, c, Sizeof(c));
   Label1.Caption := c;
Liegt es an der 24?
  Mit Zitat antworten Zitat
Chris P

Registriert seit: 8. Mär 2004
230 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Problem mit GetKeyNameText

  Alt 11. Mai 2004, 09:08
Denn das Label ist nach einem Tastendruck leer.
Wo liegt der Fehler???
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Problem mit GetKeyNameText

  Alt 11. Mai 2004, 09:21
Zitat von Chris P:
Denn das Label ist nach einem Tastendruck leer.
Wo liegt der Fehler???
Ja - es liegt an der 24. In der Win32-Referenz steht auch warum. Hier ein Auszug
Code:
lParam

Specifies the second parameter of the keyboard message (such as WM_KEYDOWN) to be processed. The function interprets the following portions of lParam:

Bits   Meaning
16-23   Scan code.
24   Extended-key flag. Distinguishes some keys on an enhanced keyboard.
25   "Don't care" bit. The application calling this function sets this bit to indicate that the function should not distinguish between left and right CTRL and SHIFT keys, for example.
D.h. Bit 16-23 müssen den Wert von Key bekommen.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#4

Re: Problem mit GetKeyNameText

  Alt 11. Mai 2004, 09:24
Zwei grundlegende Probleme.
  • Du setzt die Funktion falsch ein.
  • Der erste Wert ist abhängig von der genutzten Tastatur und kann variieren

Vom ersten Wert interessieren die Bits 16 - 23, 24 und 25.

Der Wert der Bits 16 - 23 ist wie folgend
MS Help :: WM_KEYDOWN
16-23 Specifies the scan code. The value depends on the original equipment manufacturer (OEM).
24 Specifies whether the key is an extended key, such as the right-hand ALT and CTRL keys that appear on an enhanced 101- or 102-key keyboard. The value is 1 if it is an extended key; otherwise, it is 0.


Und hier die Hilfe zu GetKeyNameText
MS Help :: GetKeyNameText
lParam

Specifies the second parameter of the keyboard message (such as WM_KEYDOWN) to be processed. The function interprets the following portions of lParam:

Bits Meaning
16-23 Scan code.
24 Extended-key flag. Distinguishes some keys on an enhanced keyboard.
25 "Don't care" bit. The application calling this function sets this bit to indicate that the function should not distinguish between left and right CTRL and SHIFT keys, for example.


Kurz, mit festen Werten zu arbeiten macht in keinem Fall Sinn

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Chris P

Registriert seit: 8. Mär 2004
230 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Problem mit GetKeyNameText

  Alt 11. Mai 2004, 09:36
Diese Funktion liefert doch den Shortcut einer Taste, oder?

Könntest du mir anhand eines Quelltextes zeigen wie man es richtig macht?

Danke schon mal!
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#6

Re: Problem mit GetKeyNameText

  Alt 11. Mai 2004, 09:42
Hier mal ein Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  SC: TShortCut;
begin
  SC := ShortCut( Ord('A'), [ssAlt] );
  Edit1.Text := ShortCutToText( SC );
end;
......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Chris P

Registriert seit: 8. Mär 2004
230 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Problem mit GetKeyNameText

  Alt 11. Mai 2004, 09:46
Danke, so hab ich mit das vorgestellt

Aber ich hab auch gehört es lässt sich auch mit GetKeyNameText machen?

Wo liegt der Unterschied?
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#8

Re: Problem mit GetKeyNameText

  Alt 11. Mai 2004, 09:48
Zitat von Chris P:
Wo liegt der Unterschied?
GetKeyNameText setzt Du ein, wenn Du den Code, welcher durch Windowsbotschaften versandt wird "entschlüsseln" willst. GetKeyNameText arbeitet direkt mit dem Hardwaretreiber, da die Zahlen für die gleichen Tasten von Tastatur zu Tastur unterschiedlich sind.

Obiges Beispiel arbeitet bereits mit den allgemeinen Windows (bzw. Linuxwerte bei QMenus), welche herstellerunabhängig sind.

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Chris P

Registriert seit: 8. Mär 2004
230 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Problem mit GetKeyNameText

  Alt 11. Mai 2004, 09:56
Ok, dankeschön
  Mit Zitat antworten Zitat
Chris P

Registriert seit: 8. Mär 2004
230 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Problem mit GetKeyNameText

  Alt 11. Mai 2004, 10:05
Aber nun stellt sich schon die nächste Frage:

Wie macht man das, wenn zB. die Eingabetaste gedrückt wird und man möchte den Namen dieses
Steuerelements bekommen? In diesem Falle: CARRIAGE RETURN

oder für Esc den Wert ESCAPE?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:30 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