Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ersatz für vk_Add im KeyDown-Ereignis (https://www.delphipraxis.net/109304-ersatz-fuer-vk_add-im-keydown-ereignis.html)

juergen 27. Feb 2008 19:42


Ersatz für vk_Add im KeyDown-Ereignis
 
Hallo zusammen,
ich habe im OnKeyDown-Ereignis folgendes stehen:
Delphi-Quellcode:
procedure TMain01.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Key = vk_Add then
...
Das hat den Nachteil, dass ich NUR die Plustaste vom Num-Block verwenden kann.
Ich würde gern beide Möglichkeiten nutzen, also auch die Plustaste rechts neben dem "ü".
Beide Tasten haben den ASCII-Wert #43.

Wie kann man denn beide Tasten im KeyDown-Event abfragen?
Also irgendwie #43 in einen Word-Wert umwandeln, oder?

Schon mal Danke vorab!

Neutral General 27. Feb 2008 19:46

Re: Ersatz für vk_Add im KeyDown-Ereignis
 
Hi,

Genau. Und das kannst du mir Ord('+') tuen oder ganz einfach abfragen ob die Taste = $2B. ;)

Gruß
Neutral General

juergen 27. Feb 2008 19:55

Re: Ersatz für vk_Add im KeyDown-Ereignis
 
@Neutral General,
danke für deine Antwort.
Diese beiden Varianten hatte ich schon probiert, allerdings dann mit der Konstante $6A.
Die Bedingung wird aber nicht ausgeführt (mit keiner der beiden möglichen Tasten) :(

SirThornberry 27. Feb 2008 20:04

Re: Ersatz für vk_Add im KeyDown-Ereignis
 
du hast einen kleinen Gedankenfehler. Du schreibst bei dir haben beide Tasten den Ascii-Wert....
Das kann nicht sein. Eine Taste kann nicht den gleichen Wert haben wie eine andere Taste. Und es geht hier auch nicht um den Ascii-Wert weil eine Taste nichts (zumindest wenig) damit zu tun hat was beim Druck dieser dargestellt wird. Daher bekommst du im OnKeyDown auch für das kleine 'a' und das große 'A' den gleichen Wert weil beides die gleiche Taste ist.
Bei mir hat übrigens die + Taste auf dem Nummernblock den Tastencode 107 und die + Taste neben der Enter Taste den Wert 187

Neutral General 27. Feb 2008 20:05

Re: Ersatz für vk_Add im KeyDown-Ereignis
 
Hi,

So gehts bei mir:

Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if (Key = $BB) or (Key = VK_ADD) then
    ShowMessage('!');
end;

SirThornberry 27. Feb 2008 20:12

Re: Ersatz für vk_Add im KeyDown-Ereignis
 
das liegt daran das $BB was anderes ist als $2B :wink:

Neutral General 27. Feb 2008 20:27

Re: Ersatz für vk_Add im KeyDown-Ereignis
 
Ja.. das komische ist ja:

Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  Caption := IntToHex(Ord(KEy),2);
end;
da kommt $2B raus wenn man auf + drück... Deswegen dachte ich zuerst $2B. :P

juergen 27. Feb 2008 20:28

Re: Ersatz für vk_Add im KeyDown-Ereignis
 
Vielen Dank, beide Varianten funktionieren! :thumb:
Mein jetziges Problem:
Ich habe hier eine ASCII-Tabelle DOS Codepage 850(von Wikipedia).
Da steht für das Pluszeichen der Wert 043. Ich hatte nun gedacht, das wäre mein Wert den ich suche.
Wie ich nun weiß, ist das ja falsch.

@SirThornberry,
gibt es eine Tabellen-Norm nach der ich suchen könnte, um deine genannten Werte zu finden?

@Neutral General,
ich habe hier eine Tabelle, da stehen die Virtual Keys drin mit deren Konstanten.
Bei vk_Add steht bei mir allerdings -> $6B :gruebel:
Gibt es eine Tabelle wo ich die Konstanten für die Tasten finde?

:dp:

SirThornberry 27. Feb 2008 20:31

Re: Ersatz für vk_Add im KeyDown-Ereignis
 
Zitat:

Zitat von Neutral General
Ja.. das komische ist ja:

Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  Caption := IntToHex(Ord(KEy),2);
end;
da kommt $2B raus wenn man auf + drück... Deswegen dachte ich zuerst $2B. :P

*g* du bist drauf rein gefallen :wink: OnKeyPress liefert das Zeichen welches anhand der gedrückten Tasten entsteht. OnKeyDown hingegen liefert den Tastencode.

uligerhardt 25. Nov 2008 09:54

Re: Ersatz für vk_Add im KeyDown-Ereignis
 
Ich weiß, das Thema ist uralt. Aber falls doch noch mal jemand drüberstolpert: Das Ding ($BB) heißt VK_OEM_PLUS.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:28 Uhr.
Seite 1 von 2  1 2      

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