6

有时我需要一个 GUI 来设置数值范围,但到目前为止,我还没有真正找到任何能很好地做到这一点的组件。

我尝试了以下方法:

  • 2 个 TTrackbars:1 个最小,1 个最大

  • 2个TTackbars:1个最小,1个范围

  • 2 个 TSpinEdit 控件,用于手动输入数字

  • 带范围的 ttrackbar 1 TTrackbar 控件,带有一个小按钮可以在最小模式和最大模式之间切换。在最小模式下我设置了 selStart,在最大模式下我设置了 selEnd(ShowSelRange 设置为 true)。

大多数选项占用的屏幕空间比我想要的要多,而且它们并不直观。

理想情况下,我想要像 Sony ACID 中的滚动条一样的东西。您可以单击并拖动 3 个不同的点到最小值、最大值或两者:

很棒的mspaint绘图

是否有任何可用于设置范围的免费组件,或者可以通过创造性地使用开箱即用的 VCL 组件来完成类似的事情?


更新

我已经修改了 TMkRangeSlider 以满足我的需要。它现在就像一个魅力。我已将修改后的组件和演示发送给原作者。

TMkRangeSlider 1.1

4

2 回答 2

5

Michael Kochiashvili 的 Range Slider 之类的东西怎么样。它是带有源代码的免费软件,为 Delphi 5 编写并附带一个演示:

替代文字

它不会同时移动 min 和 max,但是由于您已经获得了源代码,因此如果您真的需要它,您可以添加该功能。

于 2009-08-15T02:07:28.357 回答
1

使用标准的 TScrollBox,技术上可以手动调整其 PageSize 和 Position 属性,同时拖动其拇指(在其 OnScroll 事件中的 ScrollCode=scTrack)以模拟您在 ACID 屏幕截图中显示的那种 UI。问题是 1)您不能拥有绘制 TScrollBar 来添加拖动线,以及 2)没有直接的方法来确定用户按住鼠标的拇指部分(末端与中间)。除非您可以提出一些相当可靠的计算来根据当前 Position 和 PageSize 相对于整个客户矩形来计算拇指左右边缘的像素偏移量,否则您最好简单地编写自己的组件,然后你可以让它看起来和行为你想要的任何东西。

于 2009-08-15T01:45:40.250 回答