Użyj wbudowanego autocompletion feature do wszystkich elementów sterujących edycji w systemie Windows.
Najpierw wypełnij swój obiekt TStrings
. Następnie użyj GetOleStrings
, aby utworzyć TStringsAdapter
, aby go zawinąć. (Adapter nie rości sobie prawa własności do obiektu TStrings
, więc należy się upewnić, że nie zostanie zniszczony, gdy adapter jest nadal aktywny). Adapter zapewnia interfejs IStrings
, który jest potrzebny, ponieważ funkcja autouzupełniania wymaga Interfejs IEnumString
zapewniający ukończenie meczów. Zadzwoń pod numer _NewEnum
.
Następnie wywołaj CoCreateInstance
, aby utworzyć obiekt IAutoComplete
. Wywołaj metodę Init
, aby powiązać ją z uchwytem okna kontrolki edycji. Jeśli używasz pola kombi, wyślij mu wiadomość o numerze cbem_GetEditControl
, aby znaleźć podstawowe okno edycji.
Możesz zatrzymać w tym momencie, a autouzupełnianie powinno działać automatycznie. Możesz wyłączyć autouzupełnianie, jeśli chcesz, lub możesz ustawić dowolną liczbę autocompletion options.
Mówisz, że nie chcesz autouzupełniania, ale w terminologii OS, myślę, że to, czego naprawdę nie chcesz, nazywa się auto append, gdzie pozostała część łańcucha jest automatycznie wprowadzana do pola edycji jako typy użytkowników, ale wybrane tak, aby dalsze pisanie nadpisało je, a użytkownik musi usunąć nadmiarowy tekst, jeśli pożądana wartość jest krótsza niż jeden z dopasowań.
Istnieje również auto sugeruje, który wyświetla listę rozwijanych sugestii.
Możesz włączyć jedną lub obie opcje. Nie musisz sam filtrować listy sugestii; obiekt autouzupełniania sam filtruje listę IEnumString
.
To nic nie jest doskonałe, dokładnie to, czego chcę, nie wiedziałem o opcjach autouzupełniania, dziękuję. –
Funkcja IAutoComplete nie obsługuje dopasowywania żadnego częściowego ciągu znaków, ale obsługuje tylko dopasowywanie od początku. Mam na myśli, biorąc pod uwagę dwa ciągi, "bcd" i "abcd", jeśli piszę "bc", dopasuje się tylko "bcd", ale chcę też, aby dopasować również "abcd". –
Wtedy "autouzupełnianie" nie jest pożądaną funkcją, @Edwin. To * uzupełnia * to, co już wpisałeś. –