Potrzebuję zaimplementować w standardowych kontrolkach (głównie TMemo
i TEdit
/TLabeledEdit
) usuwanie poprzedniego wyrazu za pomocą kombinacji Ctrl + BkSp
tak, jak ma to miejsce np. w edytorze kodu w Delphi 7;
Kombinowałem już ze zdarzeniami OnKeyDown
, OnKeyUp
i OnKeyPress
zarówno kontrolki jak i formularza, z włączonym i wyłączonym KeyPreview
formularza rodzica, niestety bez powodzenia; Bez względu na powyższe ustawienia w danej kontrolce i tak zostaje wpisany kwadracik, mimo zerowania argumentu Key
we wszystkich zdarzeniach; Próbowałem także wykorzystać prywatną zmienną typu Boolean
- ustawiałem na True
w zdarzeniu OnKeyDown
jeśli ssCtrl
został wciśnięty (ssCtrl in Shift
), oraz na False
w OnKeyUp
gdy został puszczony (ssCtrl in Shift
) po to, bym mógł sprawdzić stan tego specialnego klawisza w zdarzeniu OnKeyPress
, jednak także bez powodzenia; Niestety zawsze, gdy wykombinuję Ctrl + BkSp
do kontrolki zostaje wpisany kwadracik;
Pośrednio można to rozwiązać przez dodanie do menu głównego nową pozycję typu Usuń poprzedni wyraz i ustawiając jej HotKey
na Ctrl+BkSp
, jednak wolałbym tego nie robić (choć w ostateczności przymknę okno); W każdym formularzu, gdzie istnieją kontrolki klas TMemo
czy TEdit
/TLabeledEdit
zarówno w menu głownych jak i kontekstowych jest odpowiednia sekcja Edycja
i mógłbym tam dodać taką pozycję, jednak wolałbym te menu pozostawić bez zmian, gdyż ich rozbudowa zahaczałaby pod modyfikację własnych paczek ikon i większe przeróbki; To oczywiście nie jest żaden problem, ale takie modyfikacje pochłaniają czas, który wolałbym przeznaczyć na rozbudowę innych elementów programu;
W sieci znalazłem mnóstwo artykułów na temat blokowania klawiszy VK_BACK
czy VK_DELETE
(co już stosowałem dawno temu), ale w połączeniu z Ctrl
nie sprawdzą się;
To ile znaków i dokąd odbędzie się usuwanie jeszcze nie określiłem dokładnie, na razie testowałem z usuwaniem ciągu znaków do znaku ' '
(spacji), ale nie udało się;
Czy ktokolwiek wie w jaki sposób można osiągnąć taki efekt? Jak usunąć poprzedni wyraz do jakiegokolwiek znaku? Będę bardzo wdzięczny za wskazówki;