Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Tastencodes (https://www.delphipraxis.net/209717-tastencodes.html)

Adenos 13. Jan 2022 15:19

Tastencodes
 
ich habe in der Liste der virtuellen Tastencodes (VK_) nicht herausgefunden, welchen Code die beiden Kommatasten haben? VK_COMMA und VK_NUMPADCOMMA scheinen nicht zu stimmen. Die Unit LCLType habe ich eingebunden.

Klaus01 13. Jan 2022 16:14

AW: Tastencodes
 
.. vielleicht wirst Du hier fündig: https://docs.microsoft.com/de-de/win...tual-key-codes

Grüße
Klaus

himitsu 13. Jan 2022 17:24

AW: Tastencodes
 
Und mal ganz im Ernst, aber wieso kommt niemand auf die irrsinnige Idee es notfalls einfach mal ausprobieren?

Taste drücken, im OnKeyDown den Wert ablesen und dann beim Hersteller in der Doku (oben verlinkt) nachsehn, welche Konstante es ist.

110 = $6E = VK_DECIMAL = "Dezimaltrennzeichen" im Zehnerblock

188 = $BC = VK_OEM_COMMA = Komma, bzw. "Satztrennzeichen" bei den Buchstaben



Nja, das Eine hätte man einfach so entdecken können, denn das eine "Komma" in kein Komma, sondern ein "Dezimaltrennzeichen"
(
Delphi-Quellcode:
,
auf deutscher Tastatur, aber
Delphi-Quellcode:
.
bei den Engländern)

KodeZwerg 13. Jan 2022 22:14

AW: Tastencodes
 
Liste der Anhänge anzeigen (Anzahl: 1)
Auch wenn schon tausend mal beispiele zu diesem thema flogen, ich füge der sammlung eins hinzu :-)
Delphi-Quellcode:
procedure TForm1.GetLockInfo;
begin
  cbCaps.Checked := (GetKeyState(VK_CAPITAL) <> 0);
  cbNum.Checked := (GetKeyState(VK_NUMLOCK) <> 0);
  cbScroll.Checked := (GetKeyState(VK_SCROLL) <> 0);
End;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  GetLockInfo;
  { TMouseButton = (mbLeft, mbRight, mbMiddle); }
  cbLeft.Checked := (ssLeft in Shift);
  cbRight.Checked := (ssRight in Shift);
  cbMiddle.Checked := (ssMiddle in Shift);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  GetLockInfo;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  Modifier: Int64;
begin
  GetLockInfo;
  cbShift.Checked := (ssShift in Shift);
  cbControl.Checked := (ssCtrl in Shift);
  cbAlt.Checked := (ssAlt in Shift);
  Modifier := 0;
  if cbShift.Checked then
    Modifier := Modifier + VK_SHIFT;
  if cbControl.Checked then
    Modifier := Modifier + VK_CONTROL;
  if cbAlt.Checked then
    Modifier := Modifier + VK_MENU;
  edKey.Text := 'Mod: ' + IntToStr(Modifier) + ' - Key: ' + IntToStr(Key);
end;

procedure TForm1.WMKeyDown(var Msg: TWMKeyDown);
begin
  inherited;
  cbExtended.Checked := (Msg.KeyData and $1000000 <> 0);
  edWMKey.Text := 'Data: ' + IntToHex(Msg.KeyData, 8) + ' - Char: ' +
    IntToStr(Msg.CharCode);
  (*
    case Msg.CharCode of
    VK_RETURN: // ENTER pressed
    if (Message.KeyData and $1000000 <> 0) then
    // Test bit 24 of lParam
    ShowMessage('ENTER on numeric keypad')
    else
    ShowMessage('ENTER on Standard keyboard');
    end;
  *)
end;
Im Anhang ist das projekt als quelltext und ausführbare datei.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf