Конференция "Основная" » Выделение части текста в TEdit [WinXP]
 
  • Прохожий 001 (18.03.08 09:01) [0]
    Мне нужно выделить несколько символов в Edit и передать ему управление, чтобы можно было эти выделенные символы чем-то заменить (т.е. в Edit написано например 443000, надо выделить 000, чтобы пользователь смог заменить эти три цифры своими, не переписывая первые три). Какой командой/сообщением воспользоваться, чтобы отловить это событие?
  • Сергей М. © (18.03.08 09:08) [1]
    см. SelStart, SelLength.
  • Прохожий 001 (18.03.08 09:09) [2]
    Это-то я уже сообразил. Но потом если передаешь Edit'у фокус, выделяется все равно весь текст. Где-то я уже видел подобное, да найти не могу...
  • Сергей М. © (18.03.08 09:11) [3]

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


    Так ты сначала фокус передай, и уж только потом устанавливай выделение текста сфокусированного контрола)
  • Сергей М. © (18.03.08 09:14) [4]

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


    Дык в справке по SelStart, наверно, и видел)
  • Прохожий 001 (18.03.08 10:29) [5]
    Ага, пасиб
    А ещё такой вопрос: у меня есть файл с названиями улиц, как мне сделать автоподстановку из этого файла например для ввода: "Советс[кой армии, ул.]" и чтобы при нажатии Enter эта строчка применялась для текущего edit?
  • Сергей М. © (18.03.08 10:36) [6]
    Большой файл-то ?
  • Прохожий 001 (18.03.08 11:06) [7]
    36,7Мб
    скорость не критична.
  • Сергей М. © (18.03.08 11:18) [8]
    Принципиально ли держать эту инф-цию именно в обычном текстовом файле ?
    Или не исключается вариант переноса инф-ции в полноценную базу данных ?
  • Прохожий 001 (18.03.08 11:23) [9]
    Вариант не исключается, интересует метод реализации "автодополнения".
  • Сергей М. © (18.03.08 11:29) [10]

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


    Он сводится к эффективному поиску строки, начинающейся с уже введенного юзером фрагмента. Это ключевой момент в решении задачи. В случае использования СУБД решение многократно упрощается.
  • Прохожий 001 (18.03.08 12:31) [11]
    Да нет же!
    Я знаю, как искать и в строке, и в базе. Меня интересует сама метода - как сделать так, чтобы при вводе Стро пользователю предлагалось Стро[ка], Стро[йка] и тд...
  • Сергей М. © (18.03.08 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 (18.03.08 12:59) [13]
    Почти получилось. Только если юзер решит удалить "выделенную" часть, то она удаляется, а потом заново восстанавливается...
  • Сергей М. © (18.03.08 13:01) [14]
    А это уж ты сам разруливай, при каких действиях юзера использовать эту логику, а при каких не использовать.
  • Прохожий 001 (18.03.08 13:12) [15]
    Я попытался повесить это на событие OnChange - тогда восстанавливается после удаления. Повесил на OnKeyPress - вообще выводит только после нажатия лишней кнопки :(
  • Johnmen © (18.03.08 14:29) [16]
    Тут два пути:
    1. Продолжать вешать "это" на: OnKeyDown, OnClick, OnDblClick, OnDragOver и т.д.
    2. Начать думать.
 
Конференция "Основная" » Выделение части текста в TEdit [WinXP]
Есть новые Нет новых   [134484   +48][b:0][p:0.001]