Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];




Вниз

Помогите с ComboBox ом разобраться 


ASM   (2002-02-19 20:33) [0]

Народ хэлп нужен! Как в ComboBox"е стандартном сделать:
при вводе текста идет поиск по Items"ам (Items"ы заполнены)
и если первые символы, имеющихся в списке строк, совподают
с введеными подставляется хвост слова выделенный если
нет то просто введенные символы.



McSimm   (2002-02-20 10:25) [1]

1. Надо отследить, что пользователь добавил символ(ы), а не нажал backspace, del и пр. Для этого можно хранить последнюю длину текста и работать только в случае его увеличения. Если этого не сделать, то нельзя будет стереть символы - они будут постоянно добавляться.

2. Надо предусмотреть защиту от зацикливания события OnChange.

3. ComboBox1.Sorted желательно установить в True.

Событие OnChange может выглядеть подобно этому:


procedure TForm1.ComboBox1Change(Sender: TObject);
var I, L: Integer;
S: String;
begin
if ComboBox1.Tag = -1 then Exit; // Защита от зацикливания.
S := ComboBox1.Text;
L := Length(S);
if (L > ComboBox1.Tag) then // Увеличилась ли длина
for I := 0 to ComboBox1.Items.Count - 1 do
if Pos(S, ComboBox1.Items[I]) = 1 then
begin
S := ComboBox1.Items[I];
ComboBox1.Tag := -1; // Защита от зацикливания.
ComboBox1.Text := S;
ComboBox1.SelStart := L;
ComboBox1.SelLength := Length(S);
ComboBox1.Tag := Length(S); // Сохраняем длину
Exit
end
end;



McSimm   (2002-02-20 10:40) [2]

Концовку надо заменить:

ComboBox1.SelLength := Length(S);
Break
end;
ComboBox1.Tag := Length(S); // Сохраняем длину
end;




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.018 c
1-19209           Игорь М               2002-02-19 10:44  2002.03.07  
Печать на LBP 810


6-19286           NetBreaker666         2001-12-20 14:38  2002.03.07  
Как получать в CGI данные, переданные методом Post???


4-19391           Renard                2002-01-11 07:57  2002.03.07  
Можно ли взять текстовую строку из чужего ListBox a?


14-19318          Potemkin              2002-01-18 10:30  2002.03.07  
Вопрос по отчетам в QR3


14-19306          Delirium              2002-01-17 18:42  2002.03.07  
Кто сколько часов в день работает?