2016-04-21 48 views
2

該項目是Delphi5有沒有限制在一個大的形式鼠標滾輪的範圍的方式

我有一個表格,將顯示可變數量的面板,足夠大,形式將會比大得多屏幕可以一次顯示。

我用下面,讓鼠標滾輪上下滾動

ScrollBy(0, WheelDelta); 

它工作正常,但你可以滾動過去的窗體的頂部或底部。

有沒有限制滾動範圍的方法?

非常感謝您的幫助。

+0

計算,並限制在代碼的滾動,有限制ScrollBy沒有自動方式。 –

+1

'ScrollBy(0,Min(ClientHeight - (BottomMostPanel.Top + BottomMostPanel.Height),WheelDelta));' –

+0

@SertacAkyuz,這不應該是答案嗎? – Johan

回答

3

既然你有垂直滾動條可見,這是更好地採取行動,而不是調用ScrollBy上。

procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState; 
    WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); 
begin 
    VertScrollBar.Position := VertScrollBar.Position-WheelDelta; 
    Handled := True; 
end; 

滾動條限制更改其頂部位置和最大的滾動位置

+0

完美的工作!謝謝。我之前看到有人評論不迴應某人的建議,我對此表示歉意。我有時會發表一個問題,然後忘記我做了什麼。這一次我收到一封電子郵件,說有回覆。 – dcboje

+0

@dcboje在SO(實際上是所有的StackExchange站點)上,我們向上投票(/向下投票)問題和我們認爲有用的答案(/糟糕的)。另外(或分開),提問者可以通過點擊左邊表決按鈕下方的勾號來將答案標記爲正確答案。這些操作在「遊覽」和其他位於「幫助」中的其他地方進行了描述,您可以通過頂部的「幫助」按鈕訪問這些操作。 –

相關問題