全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1483
推到 Plurk!
推到 Facebook!

如何在listbox裡找到相符的資料?

答題得分者是:pigbaby
writeman
初階會員


發表:31
回覆:34
積分:28
註冊:2004-02-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-18 10:20:12 IP:61.70.xxx.xxx 未訂閱
hi all 我有一個edit裡可輸入字串 又有一個listbox裡放了一些字串 我想要做到當我edit發生onchange時就去比對listbox裡的每個item 若有部份符合就把它放到第一項去(捲動到第一項) 我在listbox裡用了indexof來做 但發現listbox只有在完全比對成功時才會把item資料選出 是否能做到部份符合就選出呢???    
procedure TForm1.Edit1Change(Sender: TObject);
var
  str: string;
  idx: integer;
begin
  str:= edit1.Text;
  idx:= listbox1.Items.IndexOf(str);
  if(idx >= 0)then begin
    listbox1.ItemIndex:= idx;
  end;
end;
pigbaby
初階會員


發表:2
回覆:84
積分:47
註冊:2002-09-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-18 11:45:24 IP:210.200.xxx.xxx 未訂閱
豬寶寶的寫法 可能有點笨...請多包涵^^ procedure TForm1.Edit1Change(Sender: TObject); var I: Integer; str: string; idx: integer; begin str:= edit1.Text; for I := 0 to LISTBOX1.Items.Count - 1 do begin if STR=COPY(LISTBOX1.Items.Strings[I],1,LENGTH(STR)) then begin listbox1.ItemIndex:= I; EXIT; end; end; // for end; >_< 用CODE會排不出來..只能用這種沒縮排的了>_< 發表人 - pigbaby 於 2004/11/18 11:52:55
writeman
初階會員


發表:31
回覆:34
積分:28
註冊:2004-02-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-18 13:08:19 IP:61.70.xxx.xxx 未訂閱
引言: 豬寶寶的寫法 可能有點笨...請多包涵^^
procedure TForm1.Edit1Change(Sender: TObject);
var
  I: Integer;
  str: string;
  idx: integer;
begin
  str:= edit1.Text;
  for I := 0 to LISTBOX1.Items.Count - 1 do
  begin
    if STR=COPY(LISTBOX1.Items.Strings[I],1,LENGTH(STR)) then
    begin
      listbox1.ItemIndex:= I;
      EXIT;
    end;
  end;    // for
end;
>_< 用CODE會排不出來..只能用這種沒縮排的了>_< 發表人 - pigbaby 於 2004/11/18 11:52:55
感謝豬寶寶 上面的方法可以 不過我想再做到難一點 可否在比對時 if STR=COPY(LISTBOX1.Items.Strings[I],1,LENGTH(STR)) then 不只是從1開始呢 也就是在整個字串中只要符合就行 應該是指類似全文檢索那樣?
tonytop
中階會員


發表:6
回覆:114
積分:89
註冊:2003-12-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-18 13:14:23 IP:210.64.xxx.xxx 未訂閱
 
procedure TForm1.Edit1Change(Sender: TObject);
var
  i: Integer;
begin
  for i:=0 to ListBox1.Items.Count-1 do
    if AnsiPos(Edit1.Text, ListBox1.Items.Strings[i]) > 0 then
    begin
      ListBox1.ItemIndex:=i;
      Break;
    end;
end;
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-18 13:15:18 IP:61.222.xxx.xxx 未訂閱
用POS
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-11-18 13:46:41 IP:218.15.xxx.xxx 未訂閱
writeman您好: 试试这个吧
procedure TForm1.Edit1Change(Sender: TObject);
var 
  str:string;
begin
  str:=edit1.Text;
  With listbox1 Do 
    itemindex := Perform( LB_FINDSTRING, ItemIndex, 
                            Longint(PChar(str)));
end;
——行径窄处,留一步与人行—— 發表人 - deity 於 2004/11/18 13:50:49
writeman
初階會員


發表:31
回覆:34
積分:28
註冊:2004-02-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-11-18 16:29:10 IP:61.70.xxx.xxx 未訂閱
感謝各位幫忙 分數就給豬寶寶 其他人一併感謝啦 
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-11-18 16:43:56 IP:218.15.xxx.xxx 未訂閱
< >有简单的都不用< > ——行径窄处,留一步与人行——
pigbaby
初階會員


發表:2
回覆:84
積分:47
註冊:2002-09-02

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-11-19 08:27:20 IP:210.200.xxx.xxx 未訂閱
引言: writeman您好: 试试这个吧
procedure TForm1.Edit1Change(Sender: TObject);
var 
  str:string;
begin
  str:=edit1.Text;
  With listbox1 Do 
    itemindex := Perform( LB_FINDSTRING, ItemIndex, 
                            Longint(PChar(str)));
end;
感謝deity 讓豬寶寶又學了一招^^ 謝謝^^
writeman
初階會員


發表:31
回覆:34
積分:28
註冊:2004-02-17

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-11-19 09:00:59 IP:61.70.xxx.xxx 未訂閱
引言: < >有简单的都不用< > ——行径窄处,留一步与人行—— < face="Verdana, Arial, Helvetica"> hi deity兄 不是簡單的不用 而是覺的用起來怪怪的 好像選不到到我想要的東西 例如我的listbox裡的資料如果是這樣的話 112233 11223344 123 12311 12344 22331 22332 我在edit輸入123 listbox卻跑到12311去
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-11-19 10:11:59 IP:218.15.xxx.xxx 未訂閱
稍做改变即可,怪自己没试 < class="code"> procedure TForm1.Edit1Change(Sender: TObject); var str:string; begin str:=edit1.Text; With listbox1 Do itemindex := Perform(LB_FINDSTRING, ItemIndex-1, Longint(PChar(str))); // itemIndex:=SendMessage(handle,LB_FINDSTRING,-1,Longint(PChar(str)));//改成这句也行 end; pigbaby前辈,客气了,您写的也让小弟学了一招,以后还得多请教您呢 ——行径窄处,留一步与人行—— 發表人 -
系統時間:2024-05-17 9:57:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!