![]() |
|
|
#1
|
||||
|
||||
|
Народ нужна срочно помощь. Нужно реализовать поиск.
На форме есть один ListBox и один Edit. В ListBox'e содержаться имена программ. А в Edit нужно ввести название. Только надо чтобы можно было вводить не полностью. Например в ListBox'e есть: { Borland Delphi 7 Acdsee Visual Basic } Я набираю в Edit1 "Borland" и должен высветится "Borland Delphi 7" т.е (ListBox1.ItemIndex:=at) Сама функция поиска реализована но только никак не могу сделать чтобы не полностью можно было вводить. Код:
//Edit1.OnChange
var
NeedString, str: String;
All, at, srtlen, nslen : Integer;
begin
NeedString:=Form1.Edit1.Text;
All := Form1.ListBox1.Items.Count;
At := -1;
repeat
at:=at=1;
str:=Form1.ListBox1.Items[at];
strlen:=Length(str);
nslen:=Length(NeedString);
if strlen<=nslen then begin
{Ошибка в этой строке} if Copy(str,0,nslen)=NeedString then begin
{вырезанный кусок}
end;
end;
until at=all-1;
end;Зарание спасибо. |
|
#2
|
||||
|
||||
|
Вот небольшой примерчик реализации поиска по части слова/строки.
|
|
#3
|
||||
|
||||
|
Для этого можно юзать AnsiStartsText и AnsiContainsText.
|
|
#4
|
||||
|
||||
|
Aristarh Dark , Код конечно рабочий , только мне не надо чтобы он в середине искал. Мне нужно только по первым буквам. И если можно то лучше напиши код ближе к этому :
Код:
//Edit1.OnChange
var
NeedString, str: String;
All, at, srtlen, nslen : Integer;
begin
NeedString:=Form1.Edit1.Text;
All := Form1.ListBox1.Items.Count;
At := -1;
repeat
at:=at=1;
str:=Form1.ListBox1.Items[at];
strlen:=Length(str);
nslen:=Length(NeedString);
if strlen<=nslen then begin
{Ошибка в этой строке} if Copy(str,0,nslen)=NeedString then begin
{вырезанный кусок}
end;
end;
until at=all-1;
end; |
|
#5
|
||||
|
||||
совсем думать не желаешь47 строка Unit1.pas Код:
if pos(aText,ControlBox.Items[i])>0 then Код:
if pos(aText,ControlBox.Items[i])=1 then |
|
#6
|
||||
|
||||
|
Ну да) Думать я не особо хочу )))
Но вот только мне надо чтобы было Copy .З.Ы. Ничего я в коде не понял ))))))) |
|
#7
|
|||
|
|||
|
Можно взять компонент TComboBoxEx и установить свойство acoAutoSuggest=True в множестве AutoCompleteOptions. Строки находятся в ItemsEx.
|
|
#8
|
||||
|
||||
|
Народ, не ужели так сложно исправить строчку ????
Код:
if Copy(str,0,nslen)=NeedString then begin |