用于在Delphi中设置数值范围的GUI

时间:2009-08-14 23:49:06

标签: delphi user-interface range

有一段时间我需要一个GUI来设置数值范围,但到目前为止,我从未真正找到任何可以很好地完成任务的组件。

我尝试了以下内容:

  • 2 TTrackbars:1表示分钟,1表示最多

  • 2 TTackbars:1表示分钟,1表示范围

  • 2 TSpinEdit控件手动输入数字

  • ttrackbar with range 1个TTrackbar控制,带一个小按钮,可在最小模式和最大模式之间切换。在min-mode中我设置了selStart,在max-mode中我设置了selEnd(将ShowSelRange设置为true)。

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

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

Awesome mspaint drawing

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


更新

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

TMkRangeSlider 1.1

2 个答案:

答案 0 :(得分:5)

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

alt text

它不会同时移动最小值和最大值,但由于你已经获得了源码,所以如果你真的需要它,你可以添加它。

答案 1 :(得分:1)

使用标准的TScrollBox,技术上可以手动摆弄其PageSize和Position属性,同时拖动它的拇指(ScrollCode =其OnScroll事件中的scTrack)来模拟您在ACID屏幕截图中显示的UI类型。问题是1)你不能自己绘制TScrollBar来添加拖拽线,2)没有直接的方法来确定用户按住鼠标的拇指的哪一部分(末端与中间)。除非您能够根据当前位置和PageSize相对于整个客户端矩形找出一些相当可靠的计算来计算出拇指左右边缘的像素偏移量,那么您最好只需编写自己的而不是组件,然后你可以使它看起来和行为无论如何。