本来打算做个像IE地址栏的,用户输入,下拉列表就自动挑选相似的数据,点击就完成输入,用的是combobox,才发现,点击的数据不能输入去。下面是代码。procedure TForm1.ComboBox2Change(Sender: TObject);
var
pinnamestr:string;
begin
pinnamestr:='select pinname from shangpinziliao where pinname like '''+trim(combobox2.Text)+'%''';
edit13.text:=pinnamestr;
pinnameADOQuery.Close;
pinnameADOQuery.SQL.Clear;
pinnameADOQuery.SQL.Add(pinnamestr);
pinnameADOQuery.Active:=true;
pinnameADOQuery.Open;
combobox2.Items.Clear;
pinnameADOQuery.First;
while not pinnameADOQuery.Eof do
begin
combobox2.items.add(pinnameADOQuery.fieldbyname('pinname').value);
pinnameADOQuery.next;
end;end;因为当你点击下拉列表时,数据改变,又激发OnChance事件,它又去查询,所以实现不了,高手有办法解决吗?
还有当你输入数据,比如输入“AB”,光标不是出现在“B”后面,而是出现在“A”的前面,为什么会这样的?
var
pinnamestr:string;
begin
pinnamestr:='select pinname from shangpinziliao where pinname like '''+trim(combobox2.Text)+'%''';
edit13.text:=pinnamestr;
pinnameADOQuery.Close;
pinnameADOQuery.SQL.Clear;
pinnameADOQuery.SQL.Add(pinnamestr);
pinnameADOQuery.Active:=true;
pinnameADOQuery.Open;
combobox2.Items.Clear;
pinnameADOQuery.First;
while not pinnameADOQuery.Eof do
begin
combobox2.items.add(pinnameADOQuery.fieldbyname('pinname').value);
pinnameADOQuery.next;
end;end;因为当你点击下拉列表时,数据改变,又激发OnChance事件,它又去查询,所以实现不了,高手有办法解决吗?
还有当你输入数据,比如输入“AB”,光标不是出现在“B”后面,而是出现在“A”的前面,为什么会这样的?
解决方案 »
- 穷人求助:怎样编辑Mask
- videocap视频输出大小问题?急急急
- 关于车牌号排序的问题,有兴趣的大家讨论一下,高分相送
- 摆在小弟面前的难题,急急!!!请指教!关于数据库的插值问题
- 请问.dbgrid里边.如何让滚轮来实现滚动条的功能.
- delphi+asp+sql在上海找工作怎么样?
- 关于统计查询的显示问题!
- 求教!!
- 老大,用ado怎么添加一条记录呀?(巨好赚分题)
- 如何在Delphi中显示和存取Word文档之急上加急!!!
- 请问在XP的sp2电脑上Dcom Connection 连接中间件的,但就是连不上,提示为拒绝访问,这是为何呀?
- 请问:delphi中,参数长度可否大于255个字节??我写的存储过程,里面一个参数,长度为varchar(1000)
这段代码放在OnChange里,那么你输一个字符就会触发一次该事件,就会执行一次SQL查询。
不知道你的ComboBox里的值是如何加到ComboBox中去的?
输入字符后,最好给出该ComboBox的按键(如回车)事件,或放个按钮,在它的OnClick事件中再执行SQL查询,这样SQL查询就只执行那一次了...
你Clear了,光标当然会重新从最开始的地方定位了....
-----------------------
最开始change的时候查找
然后每次change的时候重新查找
但是不要items.clear
只是从items里面去掉不符合记录的item