2009-04-17 42 views
4

Delphi 2007.德爾福 - 如何解決這個奇怪的TGrid行爲?

我有一個TGrid,其行數多於可以放在屏幕上的行數,並且網格的高度是這樣的,即在底部有一個部分繪製的行。 當我點擊這個部分行時,它會跳轉到完全可見的狀態(通過Grids.pas中的'ClampInView'過程)。但它並沒有停止。由於鼠標現在在一個新的部分繪製的行上,所以也會跳起來。

最終結果是單擊部分繪製的行開始選擇垂直列中的單元格,一直旋轉到底部(或直到釋放鼠標)。

我已經複製了一個新的winforms項目只有一個網格100行,沒有代碼,所以我敢肯定,這不是我在代碼錯誤。

這對我很不好,因爲我在實際代碼中的表單具有拖放類型行爲,所以單擊並在〜0.1秒後釋放部分行將拾取單元格中的項目並放置約50行降低。當你點擊一個單元格時,這絕對不是你期望發生的。

任何建議如何解決/解決此問題?

回答

2

如果用戶點擊「不良」位置,則可以嘗試在網格中覆蓋MouseDown,並且不要調用繼承的MouseDown。

3

這就是我一直以來所做的,因爲我認爲它有部分可見的行是俗氣的。我調整網格的大小,使其客戶區域是行高的偶數倍。您可以在設計時做到這一點,或者通過代碼也很容易。踢球者將是如果你有可調整的行。如果是這種情況,那麼只需將代碼調整到行resize事件的事件處理程序中的網格(我相信它有一個)。

這不僅可以防止您嘗試修復的行爲,還可以(在我看來)讓您的UI看起來更乾淨!