查找ListBox的内容,
一个ListBox,一个Edit,
在Edit中输入内容,点击button 然后listbox内容清空,显示搜索出来的结果。
是模糊搜索,比如:123456 搜索123、234、456都可以显示出来结果。
如果结果不是1个 就依次显示在listbox的itme中。
谢谢!
一个ListBox,一个Edit,
在Edit中输入内容,点击button 然后listbox内容清空,显示搜索出来的结果。
是模糊搜索,比如:123456 搜索123、234、456都可以显示出来结果。
如果结果不是1个 就依次显示在listbox的itme中。
谢谢!
for i:=listbox.items.count-1 downto 0 do
if pos(edit.text,listbox.items[i])<1 then
listbox.items.delete(i);
// if pos(edit.text,listbox.items[i])<1 then
//也许要把pos的参数顺序调一下,忘了它的原型了
感觉在点击button后不必清空listbox
做个循环,遍历listbox的所有Items,使用pos函数看看子串(比如123)是否在项目中(比如123456),如果pos函数返回0则不再Item中,则删除这个Item,不返回0则此Item保留
i: integer;
sqlstr: string;
begin
sqlstr:= 'select * from table where 1 = 1';
if length(trim(edit1.text)) > 2
for i:= 1 to length(trim(edit1.text)) - 2 do
sqlstr:= sqlstr + ' and abc = '''+ copy(trim(edit1.text),i,3) + '''';
adoquery1.sql.text:= sqlstr;
...end;
如果不是SQL的var
L: integer; //长度
i:integer;
str: string;
begin
if length(trim(edit1.text)) > l then
for i:= 1 to length(trim(edit1.text)) - 2 do
listbox1.items.append(copy(trim(edit1.text),i,L));
..
end;
L: integer; //长度 如3: 123
i:integer;
str: string;
begin
L:= 3;
if length(trim(edit1.text)) > L then
for i:= 1 to length(trim(edit1.text)) - L do
if pos(copy(trim(edit1.text),i,L), ...//pos后面的跟2楼的一样
字符大小写? 晕去了... copy管你大写小写
多次是什么意思?
edit内容为abc,需要按a、b、c、ab、bc、abc各搜一次?
还是
按abc搜了后,允许按edit的新内容如wxyz再搜?——这样,需要先把listbox的items复制到一个字符串:sOld:=listbox.items.text;每次搜时,先listbox.items.text:=sOld;再搜