Używanie zdarzenia KeyPress dla kontrolek formularza

W tym artykule opisano sposób używania zdarzenia KeyPress dla kontrolek formularzy.

Oryginalna wersja produktu: Visual FoxPro
Oryginalny numer KB: 140296

Podsumowanie

Wielu deweloperów używa funkcji ON KEY LABEL do przypisywania programów lub procedur w programach, które mają być wykonywane po naciśnięciu określonego klucza (zazwyczaj klucza funkcji). Jeśli jednak przypisanie ON KEY LABEL ma być specyficzne dla kontrolki w formularzu, lepszym rozwiązaniem byłoby użycie zdarzenia KeyPress tej kontrolki.

Więcej informacji

Zdarzenie KeyPress jest dostępne dla następujących kontrolek formularza:

CheckBox, ComboBox, CommandButton, EditBox, Form, ListBox, OptionButton, Spinner, TextBox

To zdarzenie umożliwia sprawdzenie naciśnięcia określonego klucza. W przypadku używania zdarzenia KeyPress do wykonania akcji na podstawie klucza funkcji wartość klucza funkcji powinna być używana, jak pokazano w tej tabeli:

Key Alone Shift Ctrl Alt
------------------------------------
F1   28    84    94  104
F2   -1    85    95  105
F3   -2    86    96  106
F4   -3    87    97  107
F5   -4    88    98  108
F6   -5    89    99  109
F7   -6    90   100  110
F8   -7    91   101  111
F9   -8    92   102  112
F10  -9    93   103  113
F11  133  135   137  139
F12  134  136   138  140

Aby uzyskać więcej informacji na temat wartości klucza, zobacz funkcję INKEY() w pliku pomocy Visual FoxPro.

Przykład krok po kroku

Poniższe kroki pokazują, jak używać zdarzenia KeyPress.

  1. Utwórz formularz i umieść na nim pole tekstowe.

  2. ControlSource We właściwości pola tekstowego wpisz mykey (lub dowolną inną zmienną, którą możesz preferować).

  3. Umieść następujący kod w zdarzeniu KeyPress pola tekstowego:

    LPARAMETERS nKeyCode, nShiftAltCtrl
    *: The previous line of code is already contained in the KeyPress event
    *: by default.
    DO CASE
    
    CASE nKeyCode = 28
    WAIT WINDOW "The F1 Key has been pressed" NOWAIT
    mykey = "F1 Key"
    ThisForm.Refresh
    
    CASE nKeyCode = -4
    WAIT WINDOW "The F5 Key has been pressed" NOWAIT
    mykey = "F5 Key"
    ThisForm.Refresh
    
    ENDCASE
    
  4. Umieść następujący kod w zdarzeniu Load formularza:

    CLEAR MACROS
    SET HELP OFF
    *: This will disable FoxPro's default function key assignments.
    
  5. Umieść następujący kod w zdarzeniu Destroy formularza:

    RESTORE MACROS
    SET HELP ON
    *: This will restore FoxPro's default function key assignments.
    
  6. Umieść przycisk polecenia w formularzu i umieść następujący kod w zdarzeniu kliknięcia:

    ThisForm.Release
    
  7. Zapisz i uruchom formularz. Jeśli naciśniesz klawisz F1 lub F5, powinny zostać wyświetlone odpowiednie komunikaty OKNA OCZEKIWANIA, a pole tekstowe powinno zostać zaktualizowane.