Доброго времени суток! Вот возникла такая необходимость:
надо что бы при вводе текста в поле ввода ComboBox, после каждого нажатия клавиши происходило автодополнение текста( т.е. его достройка) + выделение той части, которая дополнилась( что бы при нажатии эта часть удалялась и подставлялась следующая). Или как вариант - при вводе текста - раскрывался список с предполагаемыми значениями.
Пример: в списке есть строка 'Хиазм' - при вводе текста: Хи - дотсраивает 'азм' и выделяет этот отрывок, далее нажимаем т - 'азм' пропадает( и если нет строк на 'Хит' ни чего не происходит).
P.S. Может и не надо новый компонент делать - можно это на стандартном пакете Delphi собрать?
Этот топик читают: Гость
Ответов: 33
Рейтинг: 1
|
|||
карма: 0 |
|
Ответов: 582
Рейтинг: 3
|
|||
Для этого нужен языковой пакет, которого в Хиазме нет (я прям Пушкин)
|
|||
карма: 0 |
| ||
Голосовали: | lsd25 |
Ответов: 1161
Рейтинг: 160
|
|||
ruzik писал(а): языковой пакет, которого в Хиазме нетА словарик в TXT формате уже не в моде? |
|||
карма: 0 |
| ||
Голосовали: | lsd25 |
Ответов: 875
Рейтинг: 322
|
|||
ruzik, почитай справку о элементе HilightMemo
|
|||
карма: 1 |
|
Ответов: 582
Рейтинг: 3
|
|||
Можно конечно, но это надо найти, что бы было просто по 1 слову в каждой строке
Нет ничего невозможного, есть много геморойного (пословица) - у меня прям творческий бум ------------ Дoбавленo в 21.30: kamakama писал(а): ruzik, почитай справку о элементе HilightMemoДа я знаю, как можно организовать подсветку и дополнение, я говорю про сам словарный пакет |
|||
карма: 0 |
|
Ответов: 758
Рейтинг: 112
|
|||
карма: 1 |
| ||
файлы: 1 | code_19698.txt [2.1KB] [408] | ||
Голосовали: | lsd25 |
Ответов: 1376
Рейтинг: 197
|
|||
lsd25 писал(а): Или как вариант - при вводе текста - раскрывался список с предполагаемыми значениями.code_19699.txt |
|||
карма: 1 |
| ||
файлы: 1 | code_19699.txt [2.7KB] [417] | ||
Голосовали: | lsd25 |
Ответов: 33
Рейтинг: 1
|
|||
ruzik писал(а): Для этого нужен языковой пакет, которого в Хиазме нет (я прям Пушкин)LainX писал(а): А словарик в TXT формате уже не в моде?Зачем? Есть же ЗАПОЛНЕННЫЙ СПИСОК у ComboBox'а - по нему и проводим поиск значений. Идея miver'а - то, что надо! ...только к ComboBox'у надо doSelectLength прикрутить - во в это собственно, и загвоздка. Поиск нужного значения сделать не сложно и стандартными средствами HiAsm'а. P.S. В Win32 SDK в разделе ComboBox Messages есть сообщение CB_SETEDITSEL - оно и выделяет текст в Edit'е. Надо помедитировать... ------------ Дoбавленo в 22.38: ...помедитировал Вот готовый вариант :
Всегда я так - сначала задам вопрос, а потом сам на него отвечу Если кому не лень - потестите схемку. -= Всем респект =- P.S. Как-бы теперь это все в один компонент запихнуть и все ComboBox'ы своего проэкта заменить? |
|||
карма: 0 |
|
Ответов: 758
Рейтинг: 112
|
|||
lsd25 писал(а): ...только к ComboBox'у надо doSelectLength прикрутитьЯ бы еще doPosition и точку раскрытия списка добавил |
|||
карма: 1 |
|
Ответов: 33
Рейтинг: 1
|
|||
miver дело говорит.
Компонент мне переписывать не охота, но можно сделать схемку-расширение. |
|||
карма: 0 |
|
Разработчик
Ответов: 26117
Рейтинг: 2126
|
|||
lsd25 писал(а): но можно сделать схемку-расширениеА это никак нельзя сделать на штатных компонентах Зачем писать IC на SendMessage |
|||
карма: 22 |
|
Ответов: 33
Рейтинг: 1
|
|||
nesco писал(а): А это никак нельзя сделать на штатных компонентахЗачем писать IC на SendMessage Можно было бы и на штатных, только нельзя при помощи штатных послать сообщение CB_SETEDITSEL($144) ComboBox'у, где старшее слово lParam = начало выделения, а младшее слово = конец выделения... вот и пришлось IC состряпать( кстати не пойму я разницы между типом cardinal и dword - в моем IC только cardinal заработал). P.S. Hiasm не сильно приспособлен к использованию всех фишек Win32 - вот и приходится IC писать. |
|||
карма: 0 |
|
Ответов: 1376
Рейтинг: 197
|
|||
lsd25 писал(а): только нельзя при помощи штатных послать сообщение CB_SETEDITSEL($144)очень даже можно послать code_19796.txt |
|||
карма: 1 |
| ||
файлы: 1 | code_19796.txt [6.7KB] [401] | ||
Голосовали: | lsd25 |
Ответов: 338
Рейтинг: 3
|
|||
Если быстро набирать то выделение "забывается"
|
|||
карма: 0 |
|
Ответов: 33
Рейтинг: 1
|
|||
foksov писал(а): lsd25 писал(а)
только нельзя при помощи штатных послать сообщение CB_SETEDITSEL($144) очень даже можно послать ...блин, забываю я про эту возможность у компонентов , кстати - хорошая фишка с 'Добавлением/удалением в Combobox'е' Думаю вопрос решен: - есть мой код( с применением IC) code_19984.txt - есть код foksov(только на стандартных компонентах) code_19796.txt |
|||
карма: 0 |
| ||
файлы: 1 | code_19984.txt [3.1KB] [352] |