Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi7, обработка вставки из буфера в комбобокс / 18 сообщений из 18, страница 1 из 1
05.10.2018, 15:07
    #39713634
Conejo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi7, обработка вставки из буфера в комбобокс
При наборе символов по каждому нажатию клавиши ищется набранное значение в списке и курсор в комбобоксе переводится на первое похожее значение. Это то что нужно.
НО Проблема возникает, если текст введен по ctrl-v. При этом поиск в комбобоксе не происходит, а т.к. с точки зрения оператора значение введено, он переходит в следующую ячейку. ItemIndex при этом -1, хотя вставленное значение в справочнике есть.

Как заставить комбобокс искать набранное значение не только по нажатию обычной клавиши, но и при вставке из буфера тоже?
...
Рейтинг: 0 / 0
05.10.2018, 15:13
    #39713637
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi7, обработка вставки из буфера в комбобокс
Conejo,

По идее вставка текста должна вызывать OnChange(). Поиск у тебя свой или стандартный?
...
Рейтинг: 0 / 0
05.10.2018, 15:17
    #39713639
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi7, обработка вставки из буфера в комбобокс
DropedDown := true;
ItemIndex := FindMyItems(what, Items);
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.10.2018, 15:17
    #39713640
Conejo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi7, обработка вставки из буфера в комбобокс
все стандартное, и все работало во время демонстрации, пока я набирала руками. Но по факту операторы работают через буфер, и вылезла такая особенность. Если знать, как принудительно вызвать поиск, все решится
...
Рейтинг: 0 / 0
05.10.2018, 15:20
    #39713642
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi7, обработка вставки из буфера в комбобокс
05.10.2018 15:17, Conejo пишет:
> Если знать, как принудительно вызвать поиск...

нету там принудительного поиска.
либо эмулировать нажатия клавиш,
либо искать самостоятельно.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.10.2018, 15:22
    #39713644
Conejo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi7, обработка вставки из буфера в комбобокс
МимопроходящийDropedDown := true;
ItemIndex := FindMyItems(what, Items);


что это за функция FindMyItems? Мне нужно вызвать стандартный поиск. А разворачивать комбобокс наоборот - очень не желательно
...
Рейтинг: 0 / 0
05.10.2018, 15:23
    #39713647
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi7, обработка вставки из буфера в комбобокс
05.10.2018 15:22, Conejo пишет:
> что это за функция FindMyItems?

это функция, которую тебе нужно написать.

> Мне нужно вызвать стандартный поиск.

нет такого.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.10.2018, 15:24
    #39713648
Conejo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi7, обработка вставки из буфера в комбобокс
Мимопроходящийлибо эмулировать нажатия клавиш,


т.е. стирать последний символ, и эмулировать нажатие соответствующей клавиши... Ну если нельзя лучше, буду использовать этот костыль)
...
Рейтинг: 0 / 0
05.10.2018, 15:25
    #39713650
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi7, обработка вставки из буфера в комбобокс
Conejoвсе стандартное

А точнее? Некоторые считают "стандартным" скопипащеный с гугля кусок кода для поиска в
OnKeyPress...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.10.2018, 15:25
    #39713651
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi7, обработка вставки из буфера в комбобокс
можно попробовать послать CB_FINDSTRING
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.10.2018, 15:29
    #39713657
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi7, обработка вставки из буфера в комбобокс
Conejo,

Найти строку с списке строк - проблема? IndexOf() тебе в руки - если нужно точное соответствие. Если не нужно - тупой for ...
Вешаешься на событие OnChange() у ComboBox. В обработчике получаешь вставленный текст из буфера (Combo.Text) и ищешь через Combo.Items.IndexOf() или просто

Код: pascal
1.
2.
3.
4.
5.
6.
7.
for i:=0 to Combo.Items.Count-1 do
   if (AText=....) then
      begin
          Combo.Text:=Combo.Items[i];
          Combo.ItemIndex:=i;
          break; 
      end;
...
Рейтинг: 0 / 0
05.10.2018, 15:47
    #39713676
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi7, обработка вставки из буфера в комбобокс
05.10.2018 15:07, Conejo пишет:
> НО Проблема возникает, если текст введен по ctrl-v. При этом поиск в комбобоксе не происходит

а ведь ты крольчиха гонишь.
по ctrl-v комбобокс позиционируются на воткнутую строку (если таковая есть).

проверено.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.10.2018, 16:18
    #39713708
Conejo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi7, обработка вставки из буфера в комбобокс
Мимопроходящий,

похоже на то что ты прав. Вероятно даже ищет. Но не находит. А значение есть...
Пробовала сделать через CB_FINDSTRING.
Вставляю из буфера ибупрофен - не находит. Стираю и ввожу с клавиатуры последнюю н - находит. Мистика...
...
Рейтинг: 0 / 0
05.10.2018, 16:20
    #39713712
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi7, обработка вставки из буфера в комбобокс
ConejoВставляю из буфера ибупрофен - не находит. Стираю и ввожу с клавиатуры последнюю н - находит.

Значит в буфере на конце есть пара невидимых символов типа перевода строки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.10.2018, 16:40
    #39713726
Conejo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi7, обработка вставки из буфера в комбобокс
Dimitry Sibiryakov,

s := ComboBox1.Text;
showmessage(IntToStr(Length(s)));

выводит 9 и после вставки из буфера, и при ручном вводе последней буквы...
...
Рейтинг: 0 / 0
05.10.2018, 16:44
    #39713730
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi7, обработка вставки из буфера в комбобокс
пощупай латиницу.
проявляется глюк или нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
05.10.2018, 17:02
    #39713740
Conejo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi7, обработка вставки из буфера в комбобокс
с латиницей то же самое
...
Рейтинг: 0 / 0
05.10.2018, 18:37
    #39713787
Conejo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Delphi7, обработка вставки из буфера в комбобокс
В итоге сделала поиск indexOf() в событии OnExit. По другому не работало, возвращалась -1 и все... Так и не поняла что происходит, наверно пятница.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi7, обработка вставки из буфера в комбобокс / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]