請問 ListBox1 查詢 條件 |
答題得分者是:aquarius
|
chubby
一般會員 發表:43 回覆:65 積分:21 註冊:2003-05-13 發送簡訊給我 |
listbox1.items:11111
11221
13311
14411
15511
21111
22333
22444
........ 約有300 items user 在 edit1.text 輸入 [1 ] 時,查詢條件指向左邊字元 1 第一筆
或 輸入 [13 ] 時,查詢條件指向左邊字元 13 第一筆
在ListBox可行嗎? 下例一定輸入字元完整 [15511]才查詢得到:
index := ListBox1.Items.IndexOf(Edit1.Text);
if index>=0 then
ListBox1.ItemIndex := index;
|
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
你好:
寫了一個簡單的程序,你試試
< class="code">
1 放一個 TEdit 將 OnChange 指定為 Edit1Change。
2 放一個 TListBox 名稱為 ListBox1。
procedure FindString (List : TListBox; Key : String);
var
idx : integer;
begin
for idx := 0 to List.Count - 1 do begin
if pos (key, List.Items.Strings [idx]) = 1 then begin
List.ItemIndex := idx;
system.Exit;
end;
end;
end; procedure TForm1.Edit1Change(Sender: TObject);
begin
FindString (ListBox1, (Sender As TEdit).Text);
end;
|
aquarius
資深會員 發表:3 回覆:347 積分:330 註冊:2003-05-21 發送簡訊給我 |
procedure SetListBoxSelected(lb:TListbox;s:string) ; var i : integer ; sItem : string ; begin lb.ItemIndex:=-1 ; if s='' then exit ; for i:=0 to lb.items.Count-1 do begin sItem:=copy(lb.items[i],1,length(s)) ; if s=sItem then begin lb.ItemIndex:=i ; break ; end ; // List Box 的內容有排序過, 可加上這一段以加快速度 if sItem>s then break ; end ; end ; procedure TForm1.Edit1Change(Sender: TObject); begin SetListBoxSelected(ListBox1,Edit1.text) ; end;只是和上一位的做法有小小的不同, 結果是差不多的.. ...
------
水瓶男的blog: http://791909.blogspot.com |
chubby
一般會員 發表:43 回覆:65 積分:21 註冊:2003-05-13 發送簡訊給我 |
引言:procedure SetListBoxSelected(lb:TListbox;s:string) ; var i : integer ; sItem : string ; begin lb.ItemIndex:=-1 ; if s='' then exit ; for i:=0 to lb.items.Count-1 do begin sItem:=copy(lb.items[i],1,length(s)) ; if s=sItem then begin lb.ItemIndex:=i ; break ; end ; // List Box 的內容有排序過, 可加上這一段以加快速度 if sItem>s then break ; end ; end ; procedure TForm1.Edit1Change(Sender: TObject); begin SetListBoxSelected(ListBox1,Edit1.text) ; end;只是和上一位的做法有小小的不同, 結果是差不多的.. ...>>< face="Verdana, Arial, Helvetica"> 感謝ha0009與aquarius 可是會出現ERROR MESSAGE List index out of bounds(-1) ??? |
chubby
一般會員 發表:43 回覆:65 積分:21 註冊:2003-05-13 發送簡訊給我 |
引言:引言:procedure SetListBoxSelected(lb:TListbox;s:string) ; var i : integer ; sItem : string ; begin lb.ItemIndex:=-1 ; if s='' then exit ; for i:=0 to lb.items.Count-1 do begin sItem:=copy(lb.items[i],1,length(s)) ; if s=sItem then begin lb.ItemIndex:=i ; break ; end ; // List Box 的內容有排序過, 可加上這一段以加快速度 if sItem>s then break ; end ; if lb.ItemIndex = -1 then lb.ItemIndex:=0; 就ok end ; procedure TForm1.Edit1Change(Sender: TObject); begin SetListBoxSelected(ListBox1,Edit1.text) ; end;只是和上一位的做法有小小的不同, 結果是差不多的.. ...>>< face="Verdana, Arial, Helvetica"> 感謝ha0009與aquarius 可是會出現ERROR MESSAGE List index out of bounds(-1) ??? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |