|
#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; Зарание спасибо. [ Ты не сможешь никому помочь до тех пор, пока не поможешь себе ] Delphi 7 user
ICQ: 570224849 / JID: x-rem@jabber.ru|no / Skype: ukc-rem / VK: ukc_rem.vk.com (ID: 27703738) |
#2
|
||||
|
||||
Вот небольшой примерчик реализации поиска по части слова/строки.
|
#3
|
||||
|
||||
Для этого можно юзать AnsiStartsText и AnsiContainsText.
THE CRACKER IS OUT THERE |
#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; [ Ты не сможешь никому помочь до тех пор, пока не поможешь себе ] Delphi 7 user
ICQ: 570224849 / JID: x-rem@jabber.ru|no / Skype: ukc-rem / VK: ukc_rem.vk.com (ID: 27703738) |
#5
|
||||
|
||||
совсем думать не желаешь
47 строка Unit1.pas Код:
if pos(aText,ControlBox.Items[i])>0 then Код:
if pos(aText,ControlBox.Items[i])=1 then |
#6
|
||||
|
||||
Ну да) Думать я не особо хочу )))
Но вот только мне надо чтобы было Copy . З.Ы. Ничего я в коде не понял ))))))) [ Ты не сможешь никому помочь до тех пор, пока не поможешь себе ] Delphi 7 user
ICQ: 570224849 / JID: x-rem@jabber.ru|no / Skype: ukc-rem / VK: ukc_rem.vk.com (ID: 27703738) |
#7
|
|||
|
|||
Можно взять компонент TComboBoxEx и установить свойство acoAutoSuggest=True в множестве AutoCompleteOptions. Строки находятся в ItemsEx.
|
#8
|
||||
|
||||
Народ, не ужели так сложно исправить строчку ????
Код:
if Copy(str,0,nslen)=NeedString then begin [ Ты не сможешь никому помочь до тех пор, пока не поможешь себе ] Delphi 7 user
ICQ: 570224849 / JID: x-rem@jabber.ru|no / Skype: ukc-rem / VK: ukc_rem.vk.com (ID: 27703738) |