2009-08-14 49 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