線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1575
推到 Plurk!
推到 Facebook!

請問 ListBox1 查詢 條件

答題得分者是:aquarius
chubby
一般會員


發表:43
回覆:65
積分:21
註冊:2003-05-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-07 11:03:44 IP:61.228.xxx.xxx 未訂閱
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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-07 11:17:22 IP:61.30.xxx.xxx 未訂閱
你好: 寫了一個簡單的程序,你試試 < 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-07 11:26:10 IP:211.23.xxx.xxx 未訂閱
 
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-07 14:39:40 IP:61.228.xxx.xxx 未訂閱
引言:
 
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-08 12:25:58 IP:61.228.xxx.xxx 未訂閱
引言:
引言:
 
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) ???
系統時間:2024-07-08 0:50:26
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!