我先扔块砖有玉的砸过来哦~
我来说说我的思路(我也是这么做的)
1.首先你字典表里要有个字段来来拼写你的科室名:如财务科为CWK
2。建立个结构替
DictList= record
Name :string;
DM :string;
end;
ArrayDictList : Array of DictList;
3.把字典都读出来放到ArrayDictList 中
Query.Open
SetLength(ArrayDictList,Query.RecordCount)
While Not Query.eof
Begin
ArrayDictList.Name = Query.fieldbyname('name').asstring
arraydictlist.dm = query.fieldbyname('dm').asstring;
query.next
End;
4.定义一个StringList
在onChange事件里过滤ArrayDictList
我是这么写的:
i:=0
While i<arraydictlistcount do
Begin
if pos(edit.text,arrardictname.dm)<>0 then
stringlist.add(inttostr(i));
i:=i+1
End;
i:=0
listbox.clear
listbox.beginupdate
while i<stringlist.count do
Begin
Listbox.add(arraydict[StrToInt(stringlist.string)].Name
i:=i+1;
End;
listbox.endupdate;
我的字典大约有1000条,速度上没有问提,大体上就这样,当然中间还有写修饰的地方
应该有比这个好的算法,大家都说说吧