eidt 控件
我要在用戶輸入完内容,並且按回車健后才去
將輸入在edit 中的内容進行處理,要如何做?在那個事件中作?我在edit 的change 事件中寫代碼,每次輸入一個字符都去
觸發了事件,查數據,很不好。應該如何做呢?procedure TF_Search_ML.Edit1Change(Sender: TObject);
var
  ls_key:string;
  Sqltext:string;
begin
   //接受用戶輸入,組成sql語句,進行查詢
   ls_key:=trim(Edit1.Text); 
   ls_key:='''%'+ls_key+'%''';
   Sqltext:='select '
           +'mlid, '
           +'code, '
           +'name, '
           +'gg,   '
           +'code||name||gg filter '
           +'from ml '
           +'WHERE code like ''M%'''
    SQLtext:=SQLtext+' and  filter like '+ls_key;
   //
   CDM.CDSmL.Close;
   CDM.CDSmL.CommandText:=SQLtext;
   CDM.CDSmL.Open;
   //
end;

解决方案 »

  1.   

    keypress,keydown   事件中写代码if key=13 then  
    begin
      .....
    end;
      

  2.   

    不想判断键值的话,直接在OnExit事件中处理吧。
      

  3.   

    問題已經解決了,謝謝各位。
    procedure TF_Search_ML.Edit1KeyPress(Sender: TObject; var Key: Char);
    var
      ls_key:string;
      Sqltext:string;
    begin
      if key=#13 then
      begin
       //
       ls_key:=trim(Edit1.Text);
       ls_key:=AnsiReplaceStr(ls_key,' ', '%');
       ls_key:=AnsiReplaceStr(ls_key,'%%', '%');
       ls_key:='''%'+ls_key+'%''';
       //
       Sqltext:='select '
               +'mlid, '
               +'code, '
               +'name, '
               +'gg,   '
               +'code||name||gg filter '
               +'from ml '
               +'WHERE code like ''M%'' ' ;
       SQLtext:=SQLtext+' and  code||name||gg like '+ls_key;
       //
       CDM.CDSmL.Close;
       CDM.CDSmL.CommandText:=SQLtext;
       CDM.CDSmL.Open;
      end;
    end;