如何将用户控件元素的事件抛出到父HMI控件/容器/控件?

问题描述 投票:0回答:1

我创建了一个带有多个控件的用户控件。其中一些也用于输入,但只有屏幕键盘,无法连续可见。

有些输入控件只需要数字,有些则只需要字母输入。 当然,我必须在同一个 HMI 页面上使用此用户控件的 1 个以上实例。

没有用户控制,很容易(但需要大量的鼠标点击或代码输入:-))为 .onFocusIn/Out 创建侦听器以显示/隐藏必要的键盘。当用户控件中定义的控件时,事件不是公共的。

一种解决方案是为用户控件(的实例)创建(引发)自定义事件,即:.onNumericInputRequest/Closing 和 .onAlphabetInputRequest/Closing

如何创建自定义事件并从某些控件的 onFocusIn/Out 事件中引发这些事件?

我尝试在“内部符号”中创建一些事件,但它属于HMI而不是用户控件的实例。对我来说,不清楚如何定义“NumericInputRequest”类及其参数(即:源代码控制的屏幕坐标)... 并且 Actions 之间有 WriteToSymbol 可能性,没有 Raise/ThrowEvent。

events user-controls twincat-hmi
1个回答
0
投票

使用 Twincat HMI V.12.60.xx+,可以自定义每个输入控件上的系统键盘类型。

有一个属性“Text”->“SystemKeyboardInputMethod”,您可以在其中选择是否要为每个输入控件显示数字键盘或文本键盘。 如果您想使用 JS 事件自己处理任何输入,您也可以决定跳过或不处理任何输入。

关于您原来的问题,无法在 TcHMI 工程中创建自定义事件。 唯一可能的解决方案是在后面编写 JS 代码。 或者,您可以在框架扩展项目中编写扩展输入控件。 [https://github.com/Beckhoff-USA-Community/TE2000_TcHMI_AdvancedTextboxControl][1]

© www.soinside.com 2019 - 2024. All rights reserved.