Tech-Ecke / Delphi Inhalt / Tastendruck vonTastatur abfragen/abfangen

 

     Tastendruck von Tastatur abfragen/Abfangen

 

   Bestimmte Tasten abfangen

Tastatureingaben werden immer an das im Fokus stehende Control gesendet. Mittels der Form-Eigenschaft KeyPreview werden Tastatureingaben zunächst zur Form gesendet und dann erst zum im Fokus stehenden Control. Damit ist es möglich einen Tastendruck dem Control vorzubehalten indem man die Eingabe mittels Key := 0 bzw. Key := #0 killt.

Hinweis: Einige Komponenten lassen sich hiermit jedoch nicht beeindrucken, wie z.B. die TCheckBox :-(

Alle Tasten von der Form abfangen   Objektinspektor > Eigenschaften > KeyPreview auf True setzen

  procedure TFormManuell.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
   key :=
#0;
end;

Bestimmte Tasten von der Form abfangen   Objektinspektor > Eigenschaften > KeyPreview auf True setzen

  procedure TFormManuell.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
if Key = VK_Up then Key := 0 // fängt Cursortaste (Pfeiltaste) hoch ab
if Key = VK_Down then Key := 0 // fängt Cursortaste (Pfeiltaste) hoch ab

Tasten abfangen und noch was tun dabei  Objektinspektor > Eigenschaften > KeyPreview auf True setzen

  procedure TFormManuell.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
if Key = VK_Up then
  
begin
      Key := 0;
     
// mach was...
   end;

Weitere Tasten-Codes am Ende der Seite !

   Nur bestimmte Zeichen zulassen (Beispiel mit TEdit)

Objektinspektor > Ereignisse > OnKeyPress

  procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
    if
not (key in ['0'..'9', ',' , '.' , #8]) then  // nur Zahlen und Komma
        begin
            key := #0;
        end
;
end
;
 

   Bestimmte Zeichen nicht zulassen (Beispiel mit TEdit)

Objektinspektor > Ereignisse > OnKeyPress

   procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
    if ( Key = 'x' ) then // x wird nicht mehr zugelassen
       begin
           Key := #0;
       end;
end;
 

 

  Weitere Tasten-Codes VK_*

VK_NULL      
VK_LBUTTON     
VK_RBUTTON     
VK_CANCEL   
VK_MBUTTON    
VK_BACK         
VK_TAB          
VK_CLEAR        
VK_RETURN       
VK_SHIFT       
VK_CONTROL      
VK_MENU       $12 ALT Taste
VK_PAUSE        
VK_CAPITAL      
VK_ESCAPE        
VK_SPACE        
VK_PRIOR        
VK_NEXT         
VK_END          
VK_HOME         
VK_LEFT         
VK_UP           
VK_RIGHT        
VK_DOWN         
VK_SELECT       
VK_PRINT        
VK_EXECUTE      
VK_SNAPSHOT     
VK_INSERT       
VK_DELETE       
VK_HELP       
VK_0            $30 Taste 0
VK_1            $31 Taste 1
VK_2            $32 Taste 2
VK_3            $33 Taste 3
VK_4            $34 Taste 4
VK_5            $35 Taste 5
VK_6            $36 Taste 6
VK_7            $37 Taste 7
VK_8            $38 Taste 8
VK_9            $39 Taste 9
VK_A            $41 Taste A
VK_B            $42 Taste B
VK_C            $43 Taste C
VK_D            $44 Taste D
VK_E            $45 Taste E
VK_F            $46 Taste F
VK_G            $47 Taste G
VK_H            $48 Taste H
VK_I            $49 Taste I
VK_J            $4A Taste J
VK_K            $4B Taste K
VK_L            $4C Taste L
VK_M            $4D Taste M
VK_N            $4E Taste N
VK_O            $4F Taste O
VK_P            $50 Taste P
VK_Q            $51 Taste Q
VK_R            $52 Taste R
VK_S            $53 Taste S
VK_T            $54 Taste T
VK_U            $55 Taste U
VK_V            $56 Taste V
VK_W            $57 Taste W
VK_X            $58 Taste X
VK_Y            $59 Taste Y
VK_Z            $5A Taste Z
VK_LWIN         
VK_RWIN         
VK_APPS         
VK_NUMPAD0      
VK_NUMPAD1      
VK_NUMPAD2      
VK_NUMPAD3      
VK_NUMPAD4      
VK_NUMPAD5      
VK_NUMPAD6      
VK_NUMPAD7      
VK_NUMPAD8      
VK_NUMPAD9      
VK_MULTIPLY     
VK_ADD          
VK_SEPARATOR    
VK_SUBTRACT     
VK_DECIMAL      
VK_DIVIDE       
VK_F1           $70 F1 Taste
VK_F2           $71 F2 Taste
VK_F3           $72 F3 Taste
VK_F4           $73 F4 Taste
VK_F5           $74 F5 Taste
VK_F6           $75 F6 Taste
VK_F7           $76 F7 Taste
VK_F8           $77 F8 Taste
VK_F9           $78 F9 Taste
VK_F10          $79 F10 Taste
VK_F11          $7A F11 Taste
VK_F12          $7B F12 Taste
VK_F13          $7C F13 Taste
VK_F14          $7D F14 Taste
VK_F15          $7E F15 Taste
VK_F16          $7F F16 Taste
VK_F17          $80 F17 Taste
VK_F18          $81 F18 Taste
VK_F19          $82 F19 Taste
VK_F20          $83 F20 Taste
VK_F21          $84 F21 Taste
VK_F22          $85 F22 Taste
VK_F23          $86 F23 Taste
VK_F24          $87 F24 Taste
VK_NUMLOCK      
VK_SCROLL       
VK_LSHIFT       
VK_LCONTROL     
VK_RCONTORL     
VK_LMENU        
VK_RMENU        
VK_SEMICOLON      $BA Taste ;
VK_EQUAL          $BB Taste =
VK_COMMA          $BC Taste ,
VK_MINUS          $BD Taste -
VK_PERIOD         $BE Taste .
VK_SLASH          $BF Taste \
VK_BACKQUOTE      $C0 Taste `
VK_LEFTBRACKET    $DB Taste <
VK_BACKSHLASH     $DC Taste \
VK_RIGHTBRACKET   $DD Taste >
VK_QUOTE          $DE Taste ´
VK_PROCESSKEY   
VK_ATTN      
VK_CRSEL
VK_EXSEL
VK_EREOF
VK_PLAY
VK_ZOOM
VK_NONAME
VK_PA1
VK_OEM_CLEAR

Die Option Drucken funktioniert erst ab Netscape V4.0 bzw. I-Explorer 5.0 !

[letzte Aktualisierung 07.04.2009]