LabVIEW 禁用滑块启用
LabVIEW disabled Slider is enabled
我在 LabVIEW 中禁用滑块时遇到了很大的问题。这是我的最小示例:
我有一个简单的 Slider,如果值高于 5,它会被禁用并显示为灰色。否则会启用 Slider。
如果我将滑块拖动到高于 5 的位置,则滑块会变灰。但我仍然能够移动滑块并更改值。只有我放下Slider后,Slider才不能使用
在我看来,这是LabVIEW的一个大bug。有没有办法在拖动过程中正确禁用滑块?
感谢您的回答!
附加信息:
就像我说的,这个片段只是我展示基本问题的最小例子。在我的应用程序中发生了以下情况:
我有一个状态机,其中一个状态启用 Slider,另一个状态禁用我的 Slider。状态每时每刻都可能发生变化,因此用户有可能在状态变化时使用滑块 --> 禁用时。此时应该直接禁用滑块(它只会变灰)......而不是在释放它之后。所以限制最大值不是真正的目标。我想禁止用户的所有滑块操作。
我想您可以通过添加另一个 属性 节点将案例结构内的滑块值设置为 5,同时变灰。如果用户试图将其拉到上方,这应该会使滑块卡在 5。
这似乎是一种奇怪的行为,因为在按住鼠标按钮时会触发值更改事件,即使控件已禁用并变灰。
我能想到的一种限制值的方法是更新此控件的数据输入限制最大值 属性 并将对最大值的值超出限制的响应设置为强制。
正如 Alexander_Sobolev 在 NI 论坛上所建议的(但我保证我是独立思考的!),您可以通过生成鼠标弹起事件来结束滑块拖动。在 Windows 上,您可以使用 Simulate Mouse.vi
from the NI site 执行此操作,它从 user32.dll:
调用 mouse_event
请注意,该 VI 的鼠标位置输入之一被错误地标记为 'Required';我在创建上面的代码之前修复了它。
我确实认为这是一种 UI 技术,只有在系统要求确实证明它是合理的,并且用户理解它为什么这样工作时才应该使用;否则,它可能会带来令人沮丧和恼人的用户体验。我不认为这是一个错误,而是一个设计决定,因为相反的行为在其他情况下同样是不受欢迎的。
我在 LabVIEW 中禁用滑块时遇到了很大的问题。这是我的最小示例:
我有一个简单的 Slider,如果值高于 5,它会被禁用并显示为灰色。否则会启用 Slider。
如果我将滑块拖动到高于 5 的位置,则滑块会变灰。但我仍然能够移动滑块并更改值。只有我放下Slider后,Slider才不能使用
在我看来,这是LabVIEW的一个大bug。有没有办法在拖动过程中正确禁用滑块?
感谢您的回答!
附加信息: 就像我说的,这个片段只是我展示基本问题的最小例子。在我的应用程序中发生了以下情况:
我有一个状态机,其中一个状态启用 Slider,另一个状态禁用我的 Slider。状态每时每刻都可能发生变化,因此用户有可能在状态变化时使用滑块 --> 禁用时。此时应该直接禁用滑块(它只会变灰)......而不是在释放它之后。所以限制最大值不是真正的目标。我想禁止用户的所有滑块操作。
我想您可以通过添加另一个 属性 节点将案例结构内的滑块值设置为 5,同时变灰。如果用户试图将其拉到上方,这应该会使滑块卡在 5。
这似乎是一种奇怪的行为,因为在按住鼠标按钮时会触发值更改事件,即使控件已禁用并变灰。
我能想到的一种限制值的方法是更新此控件的数据输入限制最大值 属性 并将对最大值的值超出限制的响应设置为强制。
正如 Alexander_Sobolev 在 NI 论坛上所建议的(但我保证我是独立思考的!),您可以通过生成鼠标弹起事件来结束滑块拖动。在 Windows 上,您可以使用 Simulate Mouse.vi
from the NI site 执行此操作,它从 user32.dll:
mouse_event
请注意,该 VI 的鼠标位置输入之一被错误地标记为 'Required';我在创建上面的代码之前修复了它。
我确实认为这是一种 UI 技术,只有在系统要求确实证明它是合理的,并且用户理解它为什么这样工作时才应该使用;否则,它可能会带来令人沮丧和恼人的用户体验。我不认为这是一个错误,而是一个设计决定,因为相反的行为在其他情况下同样是不受欢迎的。