Delphi中如何實現模擬組合按鍵,如發送Ctrl+F的按鍵


利用 keybd_event函數可實現,如下面的代碼用以實現在一個公共菜單中模擬Ctrl_F按鈕以調用DBGridEH的查找對話框功能:
這是在一個ActionList中的某一Action的OnExecute事件代碼。

 

procedure TDM.act_LocateExecute(Sender: TObject); 
var
  myPopupMenu:TPopupMenu; 
  MyDBGridEH:TDBGridEh; 
begin
  //ShowMessage(TMenuItem(TAction(Sender).ActionComponent).GetParentComponent.Name); 
  if (TAction(Sender).ActionComponent).GetParentComponent is TPopupMenu then
    myPopupMenu := (TAction(Sender).ActionComponent).GetParentComponent as TPopupMenu 
  else
    Exit; 
 
  //ShowMessage(MyPopupMenu.PopupComponent.Name); 
  if (MyPopupMenu.PopupComponent is TDBGridEh) then
  begin
    MyDBGridEH := TDBGridEh(MyPopupMenu.PopupComponent); 
    MyDBGridEH.SetFocus; 
    keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);       //按下Ctrl鍵 
    keybd_event(ord('F'), MapVirtualKey(ord('F'), 0), 0, 0);                    //按下F鍵 
    keybd_event(ord('F'), MapVirtualKey(ord('F'), 0), KEYEVENTF_KEYUP, 0);    //放開F鍵 
    keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP, 0); //放開Ctrl鍵 
  end; 
end;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM