無法處理雙擊事件,該怎麼辦?

來源:互聯網
上載者:User
無法處理雙擊事件,該怎麼辦? VCL組件開發及應用
http://www.delphi2007.net/DelphiVCL/html/delphi_20061225152031121.html
自己編個文件管理小程式,介面布局是左邊一個TreeView,管理文檔結構,右邊一個TWebBrowser控制項,負責顯示。當雙擊左邊的文檔時,右邊顯示該文檔;單擊其它文檔時,清空顯示。普通文檔沒有問題,如果當前顯示是Word,Excel等Ole類型的文檔時,雙擊其它文檔時不能截獲雙擊事件,而將雙擊分割成兩個單擊事件處理,成了變更檔名的操作,如何處理這種情況?老大們給點建議,謝謝

與文件類型無關,肯定是你的代碼自己的問題,打死我也不信,TreeView還這麼神,能夠自動識別Word的檔案?呵呵

可能我沒說清楚,雙擊TreeView下的文檔節點時,在TWebBrowser中顯示雙擊的文檔,我現在碰到的問題實際上是,當TWebBrowser當前顯示的文檔為Word,Excel等OLE文檔時,想要雙擊其他文檔節點進行顯示切換,但是由於這個過程中瀏覽器控制項先要關閉前一個文檔,然後再顯示新雙擊的文檔,使得雙擊事件的兩次點擊間隔被延遲,分成了兩個單擊事件進行處理,碰到這種情況該如何處理?將被分隔的兩個單擊事件還原成一個雙擊事件進行處理,或者有其他更好的方法,謝謝~~

可能可以在單擊後等一下,判斷是否是雙擊然後再處理。。。   或者像辦法規避這個問題。。。

瀏覽器都是單擊的吧??是不是這個原因??如果讓我做的話,也只能像樓上那樣做了

你的關閉TWebBrowser是寫在哪個事件裡的?

to   keyz:  
  TWebBrowser的關閉是寫在雙擊事件裡的~~  
  首先是ClearBrowser,   再執行關閉Browser操作,並一直檢查Browser狀態,因為Browser的關閉是有一個時延的,直到檢測Browser狀態為關閉時,才根據新文檔的URL進行Open操作。  
   
  to   littlestone08:  
    我所說的單擊雙擊事件都是針對TreeView的節點而言的,Browser只是根據TreeView傳遞的URL進行檔案開啟和顯示而已。

(1)單擊操作和雙擊操作的判斷,是由作業系統通過對滑鼠的採樣來確定而直接送給Delphi系統,還是由Delphi系統自己進行計算來評判?  
          (2)因為我實際所進行的是雙擊操作(兩次單擊的時間間隔小於系統設定),而由於TBrowser進行OLE文檔操作的時延使程式雙擊操作解釋為兩次單擊操作,哪位達人對Delphi單擊、雙擊事件的處理流程比較明白的,可否說明一下,就目前自己分析,當滑鼠雙擊時,系統事件處理應該是:  
          (捕獲第一個擊鍵)OnMouseClick   ->   OnMouseDown   ->   。。。->   (捕獲第二次擊鍵)判斷為雙擊事件OnMouseDbClick->   ...  
          當確定前面的流程為一次雙擊操作時,前面的流程如何??通過訊息堆棧儲存第一次點擊訊息暫不處理,然後判斷為雙擊時拋棄前一次單擊訊息而不作單擊事件處理?  
   
  想到啥寫啥,也不知對不對,請高手指點,呵呵

(1)單擊操作和雙擊操作的判斷,是由作業系統通過對滑鼠的採樣來確定而直接送給Delphi系統,還是由Delphi系統自己進行計算來評判?  
          (2)因為我實際所進行的是雙擊操作(兩次單擊的時間間隔小於系統設定),而由於TBrowser進行OLE文檔操作的時延使程式雙擊操作解釋為兩次單擊操作,哪位達人對Delphi單擊、雙擊事件的處理流程比較明白的,可否說明一下,就目前自己分析,當滑鼠雙擊時,系統事件處理應該是:  
          (捕獲第一個擊鍵)OnMouseClick   ->   OnMouseDown   ->   。。。->   (捕獲第二次擊鍵)判斷為雙擊事件OnMouseDbClick->   ...  
          當確定前面的流程為一次雙擊操作時,前面的流程如何??通過訊息堆棧儲存第一次點擊訊息暫不處理,然後判斷為雙擊時拋棄前一次單擊訊息而不作單擊事件處理?  
   
  想到啥寫啥,也不知對不對,請高手指點,呵呵

試了一下,但是無法重現你的問題。。  
   
  測試了一下幾個事件,發現雙擊的時候順序是:  
  MouseDown  
  Click  
  MouseUp  
  DblClick  
  MouseDown  
  MouseUp  
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.