【问题标题】:GUI to set numeric ranges in Delphi在 Delphi 中设置数值范围的 GUI
【发布时间】:2019-04-14 12:48:25
【问题描述】:

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

我尝试了以下方法:

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

  • 2 个 TTackbars:1 个表示最小值,1 个表示范围

  • 2 个 TSpinEdit 控件可手动输入数字

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

大多数选项占用的屏幕空间超出了我的预期,而且它们并不直观。

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

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


更新

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

【问题讨论】:

  • 能否分享修改后的代码?
  • @reron:好的,已经十年了,但这是我当时使用的文件。将ShowMidBar 设置为true,将ThumbStyle 设置为rsRectangle,使其看起来像上面的屏幕截图。 gist.github.com/WouterVanNifterick/…

标签: delphi user-interface range


【解决方案1】:

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

它不会同时移动 min 和 max,但既然你有源代码,如果你真的需要它,你可以添加那个功能。

【讨论】:

  • 酷,以前从未见过那个。刚下载了,我会玩的。
  • 我采纳了您的建议,采用了 TMkRangeSlider 并对其进行了修改。它正是我现在正在寻找的。谢谢!
  • @Wouter van Nifterick,请分享修改后的代码
【解决方案2】:

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

【讨论】:

  • 好的,谢谢您的建议。奇怪的是 Delphi 没有这样的东西,因为设置数字范围是我一直需要做的事情,在各种应用程序中......
  • 您描述的 UI 类型不是标准的。这就是为什么TScrollBox原生不支持(因为底层操作系统本身不原生支持)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多