Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выделение части текста в TEdit [WinXP]


Прохожий 001 ©   (2008-03-18 09:01:00) 

Мне нужно выделить несколько символов в Edit и передать ему управление, чтобы можно было эти выделенные символы чем-то заменить (т.е. в Edit написано например 443000, надо выделить 000, чтобы пользователь смог заменить эти три цифры своими, не переписывая первые три). Какой командой/сообщением воспользоваться, чтобы отловить это событие?


Johnmen   (2008-03-18 14:29:00) [1]

Тут два пути:
1. Продолжать вешать "это" на: OnKeyDown, OnClick, OnDblClick, OnDragOver и т.д.
2. Начать думать.


Прохожий 001   (2008-03-18 13:12:00) [2]

Я попытался повесить это на событие OnChange - тогда восстанавливается после удаления. Повесил на OnKeyPress - вообще выводит только после нажатия лишней кнопки :(


Сергей М.   (2008-03-18 13:01:00) [3]

А это уж ты сам разруливай, при каких действиях юзера использовать эту логику, а при каких не использовать.


Прохожий 001   (2008-03-18 12:59:00) [4]

Почти получилось. Только если юзер решит удалить "выделенную" часть, то она удаляется, а потом заново восстанавливается...


Сергей М.   (2008-03-18 12:42:00) [5]

ну что-то вроде этого:

Pattern := 'Стро';
plen := Length(Pattern);
Found := SearchStringLike(Pattern);
len := Length(Found) - plen;
if len > 0 then begin
 Edit.Text := Found;
 Edit.SelStart := plen;
 Edit.SelLength := len;
end;


Прохожий 001   (2008-03-18 12:31:00) [6]

Да нет же!
Я знаю, как искать и в строке, и в базе. Меня интересует сама метода - как сделать так, чтобы при вводе Стро пользователю предлагалось Стро[ка], Стро[йка] и тд...


Сергей М.   (2008-03-18 11:29:00) [7]


> метод реализации "автодополнения".


Он сводится к эффективному поиску строки, начинающейся с уже введенного юзером фрагмента. Это ключевоймомент в решении задачи. В случае использования СУБД решение многократно упрощается.


Прохожий 001   (2008-03-18 11:23:00) [8]

Вариант не исключается, интересует метод реализации "автодополнения".


Сергей М.   (2008-03-18 11:18:00) [9]

Принципиально ли держать эту инф-цию именно в обычном текстовом файле ?
Или не исключается вариант переноса инф-ции в полноценную базу данных ?


Прохожий 001   (2008-03-18 11:06:00) [10]

36,7Мб
скорость не критична.


Сергей М.   (2008-03-18 10:36:00) [11]

Большой файл-то ?


Прохожий 001   (2008-03-18 10:29:00) [12]

Ага, пасиб
А ещё такой вопрос: у меня есть файл с названиями улиц, как мне сделать автоподстановку из этого файла например для ввода: "Советс[кой армии, ул.]" и чтобы при нажатии Enter эта строчка применялась для текущего edit?


Сергей М.   (2008-03-18 09:14:00) [13]


> Где-то я уже видел подобное, да найти не могу


Дык в справке по SelStart, наверно, и видел)


Сергей М.   (2008-03-18 09:11:00) [14]


> потом если передаешь Edit'у фокус


Так ты сначала фокус передай, и уж только потом устанавливай выделение текста сфокусированного контрола)


Прохожий 001   (2008-03-18 09:09:00) [15]

Это-то я уже сообразил. Но потом если передаешь Edit'у фокус, выделяется все равно весь текст. Где-то я уже видел подобное, да найти не могу...


Сергей М.   (2008-03-18 09:08:00) [16]

см. SelStart, SelLength.


Наверх

Титульная страница Поиск, карта сайта Написать письмо