Главная страница
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.01 c
4-1202912615
Андрей Пл
2008-02-13 17:23
2009.01.11
Как определить что данные черех СОМ порт отправлены???


1-1205180556
mr. Eof
2008-03-10 23:22
2009.01.11
Проблема с таймером


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


2-1227959357
Pavel
2008-11-29 14:49
2009.01.11
Помогите оптимизировать код (выполнения в консоли)!


2-1227859736
начинающий программист
2008-11-28 11:08
2009.01.11
adoquery1.fields