2009-05-18 64 views
1

這種情況有點難以解釋,我會盡我所能。Delphi ListView'卡住'在鼠標事件中

我有一個ListView,它有一個右鍵菜單。其中一個菜單項打開一個新的非模態窗體。通常用戶點擊菜單項,新的表單顯示出來並沒有問題。然而,如果用戶通過點擊沒有ListItem顯示的ListView的區域來顯示右鍵單擊菜單,例如,在最後一個ListItem下面,然後單擊菜單項,非模態窗體顯示出來,但光標似乎在ListView中停留在鼠標左鍵向下狀態,即非模態窗體位於前面,但是當我移動鼠標,它使這些拖拽區域矩形在後臺ListView中,就好像鼠標按鈕被按住一樣。

我試過使用各種BringToFront,SetFocus,並試圖使用SendMessage來模擬鼠標點擊繞過它沒有成功。

+0

你試過Windows.mouse_event()嗎? – 2009-05-18 04:54:45

回答

0

發現問題。經過進一步調查,ListView實際上是TListView的自定義後代,並且它有自己的(錯誤的)處理彈出菜單的方式。

我把它切換到使用TListView的默認TListView.PopupMenu,它的工作都很好。

感謝Lars Truijens建議構建一個最小測試應用程序,這讓我走向了正確的方向。

0

聲音給我像列表視圖不正確處理WM_CANCELMODE消息,它告訴它,它有鼠標捕獲時失去了焦點。不知道如何解決這個問題,除了可能通過發送一個鼠標向上的消息。