AGB  ·  Datenschutz  ·  Impressum  







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

Tastencode und Unicode

Ein Thema von akurka · begonnen am 19. Mär 2016 · letzter Beitrag vom 21. Mär 2016
 
nahpets
(Gast)

n/a Beiträge
 
#7

AW: Tastencode und Unicode

  Alt 20. Mär 2016, 10:58
Im OnKeyPress bekommst Du das Zeichen geliefert, das aktuell der gedrückten Taste zugeordnet ist.

Die Taste, die auf einer deutschen Tastatur das Z liefert, ist auf einer englischen Tastatur mit dem Y belegt.
Wenn Du nun z. B. die Spracheinstellung der Tastatur von Deutsch auf Englisch änderst, wirst Du im OnKeyPress beim Drücken der Z-Taste (der deutschen Tastatur) ein Y bekommen. Andersherum bekommst Du, mit einer deutschsprachigen Einstellung der Tastatur, auf einer englischen Tastatur beim Drücken der Y-Taste ein Z.

In OnKeyDown und OnKeyUp bekommst Du jedoch nicht das Zeichen geliefert, dass der Tastaturbeschriftung entspricht, sondern schlicht und einfach die Nummer das Taste, die gedrückt wurde. Eine Übereinstimmung von Tastennummer und Zeichen kann möglich sein, ist aber nicht zwingend.

Bei meinem Rechner hat die Taste für die Zeichen < und >, die ja auf einer Taste liegen, die Nummer 226.

Zustätzlich wird auch noch TShiftState geliefert. Mögliche Werte sind hier TShiftState = set of (ssShift, ssAlt, ssCtrl, ssLeft, ssRight, ssMiddle, ssDouble); Hiervon können 0 bis 7 Werte, in beliebiger Kombination, geliefert werden.
Willst Du also in OnKeyDown und/oder OnKeyUp wissen, ob < oder > gedrückt wurden, so musst Du abfragen, ob Key = 226 ist.
Willst Du zwischen < und > unterscheiden können, so musst Du abfragen, ob Shift = ssShift ist. Ist dem so, dann wurde als Eingabe > gemeint. Ist ssShift jedoch "leer" so wurde als Eingabe < gemeint.
Da die Taste aber auch noch die Belegung für | hat, musst Du ggfls. auch noch abfragen, ob Shift ssAlt enthält. Wird also als Key 226 geliefert und Shift ist gleich ssAlt, so wurde als Eingabe | gemeint.

Bei einer anderen Spracheinstellung der Tastatur kann das Ergebnis natürlich vollkommen anders sein.

Hier kannst Du Dir eine Reihe von Tastaturlayouts anschauen: http://www.uni-regensburg.de/EDV/Misc/KeyBoards/

Miniprogrämmelchen zur Anzeige der getätigten Tastaturkombinationen:
Delphi-Quellcode:
unit fmKeyPreviewUnit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;

type
  TfmKeyPreview = class(TForm)
    procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  fmKeyPreview: TfmKeyPreview;

implementation

{$R *.dfm}

procedure TfmKeyPreview.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var
         s : String;
begin
  s := '';
  if ssShift in Shift then s := s + 'Shift + ';
  if ssAlt in Shift then s := s + 'Alt + ';
  if ssCtrl in Shift then s := s + 'Ctrl + ';
  if ssLeft in Shift then s := s + 'Left + ';
  if ssRight in Shift then s := s + 'Right + ';
  if ssMiddle in Shift then s := s + 'Middle + ';
  if ssDouble in Shift then s := s + 'Double + ';
  Caption := s + IntToStr(Key);
end;

end.
  Mit Zitat antworten Zitat
 

 

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 20:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz