2009-08-14 70 views
6

有一次,我需要一個GUI設置數值範圍,但到目前爲止,我從來沒有真正發現不好聽的任何部件。GUI設置數值範圍在Delphi

我已嘗試以下:

  • 2 TTrackbars:1分鐘,1表示最大

  • 2個TTackbars:1分鐘,1爲範圍

  • 2 TSpinEdit控件手動輸入數字

  • ttrackbar with range 1 TTrackbar控件,帶一個li ttle按鈕可在最小模式和最大模式之間切換。在min-mode中,我設置了selStart,並在max-mode中設置了selEnd(將ShowSelRange設置爲true)。

大多數選項需要更多的屏幕資產比我想要的,他們不直觀。

理想情況下,我想的東西,就像在索尼ACID滾動條。您可以點擊並拖動3個不同的點,最小值,最大值,或兩者:

Awesome mspaint drawing

是否有可用的設定範圍內的任何免費的組件,或者類似的東西用做亂的-box VCL組件創造性地?


更新

我修改TMkRangeSlider,以滿足我的需求。它現在像一種魅力。我已將修改的組件和演示發送給原作者。

TMkRangeSlider 1.1

回答

5

如何像Range Slider, by Michael Kochiashvili。它是免費軟件與來源,爲Delphi 5編寫,並配備了一個演示:

alt text http://www.kochini.com/dcomp/rs/ttrian.jpg

它不會同時移動的最小值和最大值,但因爲你已經得到了源,你很可能添加的功能如果你真的需要它。

+0

很酷,以前從來沒有見過。剛剛下載了它,我會玩它。 – 2009-08-15 02:53:48

+0

我已經採取了TMkRangeSlider並修改它的建議。它正是我現在正在尋找的東西。謝謝! – 2009-08-16 06:47:31

1

使用標準TScrollBox,這在技術上是可以做到的,每頁和Position屬性的一些手工擺弄而各地(ScrollCode = scTrack在其OnScroll事件)拖動滑塊來模擬那種UI的那你在ACID截圖中展示。的問題是:1)你不能所有者繪製TScrollBar添加拖動線,和2)沒有直接的方法來確定拇指的哪個部分用戶按住鼠標向下(相對於中間的端部)。除非你能拿出一些相當可靠的計算,以找出基於相對於整體的客戶端矩形的當前位置和每頁拇指的左,右邊緣的像素偏移,那麼你可能是最好的關閉只是寫自己的組件代替,然後你可以使它看起來和行爲無論如何你想要的。

+0

好了,謝謝你的建議。奇怪的是,德爾福沒有這樣的東西,因爲設置數字範圍是我需要始終做的事情,在各種應用程序中...... – 2009-08-15 03:13:36

+0

你描述的那種UI不是標準的。這就是爲什麼TScrollBox本身不支持它(因爲底層操作系統本身不支持它本身) – 2009-08-18 20:11:33