1我想在edit1中Edit1Change事件中写如代码adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select 名称 from table1 where 输入码='''+edit1.text+'''');
adoquery1.open;
edit1.text:=adoquery1.FieldValues['名称’] ;但运行总是出错 我的表的字段:
  名称 char (10);
  输入码 char(10);应该怎么改?2比如说“输入码”为‘thank'时  就会在输入’t‘时就响应此事件,有什么办法让’'thank'输完在响应该事件?

解决方案 »

  1.   

    楼上说得没错,建议你放在onexit事件中试验一下,你那段代码就算是执行成功效率也不是很高。因为你在不断改变edit1的值时,就触发editchange事件,而你又给edit1重新赋值。这样有会触发editchange事件。效率不高。
      

  2.   

    加一个判断
    if adoquery1.recordcount > 0 then 
      edit1.text:=adoquery1.Fields[0].asstring ;
      

  3.   

    最好把代码放到onKeyPress事件里面,当用户输入完thank以后按回车,然后显示相对应的信息if key=#13 then
    begin
      adoquery1.close;
      adoquery1.sql.clear;
      adoquery1.sql.add('select 名称 from table1 where 输入码='''+edit1.text+'''');
      adoquery1.open;
      edit1.text:=adoquery1.FieldValues['名称’] ;
    end;
      

  4.   

    讨厌的delphi没有modified事件啊,比较麻烦
      

  5.   

    没有,不过你可以自己在onKeyPress中编写这个功能。
    楼上用onKeyPress,但如果是鼠标或者用tab键、方向键等就不行了,或者判断很麻烦,建议用OnExit在失去焦点的时候再判断