Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Delphi7, обработка вставки из буфера в комбобокс  [new]
Conejo
Member

Откуда:
Сообщений: 111
При наборе символов по каждому нажатию клавиши ищется набранное значение в списке и курсор в комбобоксе переводится на первое похожее значение. Это то что нужно.
НО Проблема возникает, если текст введен по ctrl-v. При этом поиск в комбобоксе не происходит, а т.к. с точки зрения оператора значение введено, он переходит в следующую ячейку. ItemIndex при этом -1, хотя вставленное значение в справочнике есть.

Как заставить комбобокс искать набранное значение не только по нажатию обычной клавиши, но и при вставке из буфера тоже?
5 окт 18, 15:07    [21696462]     Ответить | Цитировать Сообщить модератору
 Re: Delphi7, обработка вставки из буфера в комбобокс  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6059
Conejo,

По идее вставка текста должна вызывать OnChange(). Поиск у тебя свой или стандартный?
5 окт 18, 15:13    [21696470]     Ответить | Цитировать Сообщить модератору
 Re: Delphi7, обработка вставки из буфера в комбобокс  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29171

DropedDown := true;
ItemIndex := FindMyItems(what, Items);

Posted via ActualForum NNTP Server 1.5

5 окт 18, 15:17    [21696475]     Ответить | Цитировать Сообщить модератору
 Re: Delphi7, обработка вставки из буфера в комбобокс  [new]
Conejo
Member

Откуда:
Сообщений: 111
все стандартное, и все работало во время демонстрации, пока я набирала руками. Но по факту операторы работают через буфер, и вылезла такая особенность. Если знать, как принудительно вызвать поиск, все решится
5 окт 18, 15:17    [21696476]     Ответить | Цитировать Сообщить модератору
 Re: Delphi7, обработка вставки из буфера в комбобокс  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29171

05.10.2018 15:17, Conejo пишет:
> Если знать, как принудительно вызвать поиск...

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

Posted via ActualForum NNTP Server 1.5

5 окт 18, 15:20    [21696480]     Ответить | Цитировать Сообщить модератору
 Re: Delphi7, обработка вставки из буфера в комбобокс  [new]
Conejo
Member

Откуда:
Сообщений: 111
Мимопроходящий
DropedDown := true;
ItemIndex := FindMyItems(what, Items);


что это за функция FindMyItems? Мне нужно вызвать стандартный поиск. А разворачивать комбобокс наоборот - очень не желательно
5 окт 18, 15:22    [21696482]     Ответить | Цитировать Сообщить модератору
 Re: Delphi7, обработка вставки из буфера в комбобокс  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29171

05.10.2018 15:22, Conejo пишет:
> что это за функция FindMyItems?

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

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

нет такого.

Posted via ActualForum NNTP Server 1.5

5 окт 18, 15:23    [21696486]     Ответить | Цитировать Сообщить модератору
 Re: Delphi7, обработка вставки из буфера в комбобокс  [new]
Conejo
Member

Откуда:
Сообщений: 111
Мимопроходящий
либо эмулировать нажатия клавиш,


т.е. стирать последний символ, и эмулировать нажатие соответствующей клавиши... Ну если нельзя лучше, буду использовать этот костыль)
5 окт 18, 15:24    [21696487]     Ответить | Цитировать Сообщить модератору
 Re: Delphi7, обработка вставки из буфера в комбобокс  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 45923

Conejo
все стандартное

А точнее? Некоторые считают "стандартным" скопипащеный с гугля кусок кода для поиска в
OnKeyPress...

Posted via ActualForum NNTP Server 1.5

5 окт 18, 15:25    [21696489]     Ответить | Цитировать Сообщить модератору
 Re: Delphi7, обработка вставки из буфера в комбобокс  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29171

можно попробовать послать CB_FINDSTRING

Posted via ActualForum NNTP Server 1.5

5 окт 18, 15:25    [21696491]     Ответить | Цитировать Сообщить модератору
 Re: Delphi7, обработка вставки из буфера в комбобокс  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 6059
Conejo,

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

for i:=0 to Combo.Items.Count-1 do
   if (AText=....) then
      begin
          Combo.Text:=Combo.Items[i];
          Combo.ItemIndex:=i;
          break; 
      end;
5 окт 18, 15:29    [21696497]     Ответить | Цитировать Сообщить модератору
 Re: Delphi7, обработка вставки из буфера в комбобокс  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29171

05.10.2018 15:07, Conejo пишет:
> НО Проблема возникает, если текст введен по ctrl-v. При этом поиск в комбобоксе не происходит

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

проверено.

Posted via ActualForum NNTP Server 1.5

5 окт 18, 15:47    [21696526]     Ответить | Цитировать Сообщить модератору
 Re: Delphi7, обработка вставки из буфера в комбобокс  [new]
Conejo
Member

Откуда:
Сообщений: 111
Мимопроходящий,

похоже на то что ты прав. Вероятно даже ищет. Но не находит. А значение есть...
Пробовала сделать через CB_FINDSTRING.
Вставляю из буфера ибупрофен - не находит. Стираю и ввожу с клавиатуры последнюю н - находит. Мистика...
5 окт 18, 16:18    [21696570]     Ответить | Цитировать Сообщить модератору
 Re: Delphi7, обработка вставки из буфера в комбобокс  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 45923

Conejo
Вставляю из буфера ибупрофен - не находит. Стираю и ввожу с клавиатуры последнюю н - находит.

Значит в буфере на конце есть пара невидимых символов типа перевода строки.

Posted via ActualForum NNTP Server 1.5

5 окт 18, 16:20    [21696575]     Ответить | Цитировать Сообщить модератору
 Re: Delphi7, обработка вставки из буфера в комбобокс  [new]
Conejo
Member

Откуда:
Сообщений: 111
Dimitry Sibiryakov,

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

выводит 9 и после вставки из буфера, и при ручном вводе последней буквы...
5 окт 18, 16:40    [21696598]     Ответить | Цитировать Сообщить модератору
 Re: Delphi7, обработка вставки из буфера в комбобокс  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 29171

пощупай латиницу.
проявляется глюк или нет.

Posted via ActualForum NNTP Server 1.5

5 окт 18, 16:44    [21696604]     Ответить | Цитировать Сообщить модератору
 Re: Delphi7, обработка вставки из буфера в комбобокс  [new]
Conejo
Member

Откуда:
Сообщений: 111
с латиницей то же самое
5 окт 18, 17:02    [21696628]     Ответить | Цитировать Сообщить модератору
 Re: Delphi7, обработка вставки из буфера в комбобокс  [new]
Conejo
Member

Откуда:
Сообщений: 111
В итоге сделала поиск indexOf() в событии OnExit. По другому не работало, возвращалась -1 и все... Так и не поняла что происходит, наверно пятница.
5 окт 18, 18:37    [21696707]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить