2012-04-24 6 views
10

skrót Ctrl+Backspace klawiatura normalnie usuwa słowo na lewo od karetki. Ale to nie działa w żadnej standardowej kontroli Delphi można oczekiwać (TEdit, TMemo, TComboBox ect.). Co ciekawe, Ctrl+Delete działa dobrze.Ctrl + Backspace w Delphi Kontroluje

Czy ktoś wie, jak w prosty sposób rozwiązać ten problem?

Wiem, że nadpisanie procedury KeyDown spowoduje to, ale jest to zbyt skomplikowane, ponieważ KeyDown musi zostać zastąpione dla każdego komponentu.

+0

To nie jest problem specyficzny dla Delphi. Rzeczywiście, 'TEdit' i inne kontrolki są jedynie opakowaniami dla natywnych kontrolek Microsoft Windows i zachowują się w ten sposób. Wypróbuj na przykład pole edycji w oknie dialogowym "Wybierz czcionkę" Notatnika. Edytuj elementy sterujące z włączoną funkcją autouzupełniania, jednak zaakceptuj skrót klawiszowy Ctrl + Backspace. –

+3

Podobnie jak Raymond ["said"] (http://blogs.msdn.com/b/oldnewthing/archive/2007/10/11/5395501.aspx). – TLama

+0

Ciekawe, nie wiedziałem o tym. Ale nadal jest to trochę denerwujące, ponieważ skrót działa w tak wielu miejscach, w tym nawet w oprogramowaniu MS. – oxo

Odpowiedz

17

To nie jest Delphi specyficzny problem. Rzeczywiście, TEdit i inne formanty są jedynie opakowaniem dla rodzimych kontrolek systemu Microsoft Windows i zachowują się w ten sposób. Wypróbuj na przykład pole edycji w oknie dialogowym "Wybierz czcionkę" Notatnika. Edytuj elementy sterujące z włączoną funkcją autouzupełniania, jednak zaakceptuj skrót klawiszowy Ctrl + Backspace. Myślę, że można to łatwo włączyć przez

SHAutoComplete(Edit1.Handle, 
    SHACF_AUTOAPPEND_FORCE_OFF or SHACF_AUTOSUGGEST_FORCE_OFF) 

(używa ShLwApi).

+0

+1, Pisałem komentarz, aby zmienić flagę z 'SHACF_DEFAULT = 0', byłeś szybszy. To najprostszy sposób na wdrożenie tej funkcji. – TLama

+0

@TLama: Tak, faktyczny autouzupełnianie prawdopodobnie nie jest tym, co OP chce ... Nadal zastanawiam się, czy nie ma lepszego sposobu na zrobienie tego. Po tym wszystkim, nie ma sensu, aby włączyć autouzupełnianie „niepełnosprawnego” w celu uzyskania skrótu Ctrl + Backspace do pracy ... –

+0

Trzeba pewnie też dodać flagę 'SHACF_FILESYS_ONLY', nie dlatego, że ma sens, ale ponieważ dokumentacji w sposób jawny mówi "Ta flaga musi być używana w połączeniu z co najmniej jedną z flag SHACF_FILESYS * lub SHACF_URL *". odnosząc się do flag, które używam powyżej. –