Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.01.11;
Скачать: CL | DM;

Вниз

Выделение части текста в TEdit   Найти похожие ветки 

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

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


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

см. SelStart, SelLength.


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

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


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


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


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


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


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


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


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

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


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

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


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

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


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

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


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

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


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


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


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


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

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


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

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

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:59) [13]

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


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

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


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

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


 
Johnmen ©   (2008-03-18 14:29) [16]

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



Страницы: 1 вся ветка

Текущий архив: 2009.01.11;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.009 c
15-1226332584
Капибара из гостей
2008-11-10 18:56
2009.01.11
Вопрос по железу


6-1196845207
Lamer666
2007-12-05 12:00
2009.01.11
Как после события TWebBrowser DownloadComplete вернуться в цикл!


2-1227685751
AIK
2008-11-26 10:49
2009.01.11
Случайное число без повторов


15-1226644981
Slider007
2008-11-14 09:43
2009.01.11
С днем рождения ! 14 ноября 2008 пятница


2-1227776113
cvg
2008-11-27 11:55
2009.01.11
Как отключить загрузку ODBC-драйвера?