找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
问题
取消精华
首页精华问答
取消推荐
高端用户推荐
申请置评
已申请置评
修改
修改标签
添加标签
官方认证
取消官方认证
修改标签
添加标签
转移分类
删除
{{itemCategory}}
Screen.FindItem('圆_1').BackColor = 0xFFFFAA00;
HMIRuntime.UI.SysFct.ClosePopup("MachineState");
MachineState这个参数代表说明含义?tc是弹窗的名称。还有后面参数的含义是什么?没有找到资料
收藏({{answerDetail.Q_FavoriteCounts}})
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
专家建议
取消最佳答案
修改
一、这段代码存在以下关键问题:
1、函数执行顺序与异步行为
OpenScreenInPopup 是一个同步阻塞函数,但它在调用后会立即返回,并不等待窗口完全打开或用户交互完成。而紧随其后的 ClosePopup("MachineState") 会立即尝试关闭该弹窗,导致窗口刚打开就被关闭,甚至可能在渲染完成前就被终止。
2、颜色变化重复执行
您两次设置 BackColor,且中间没有条件判断。无论弹窗是否打开,都会执行颜色更改,因此看起来像是“点击关闭时变颜色”。
3、ClosePopup 被无条件执行
ClosePopup("MachineState") 在脚本中是直接执行的,而不是基于弹窗当前状态来判断是否关闭。如果您的逻辑是“点击按钮切换打开/关闭”,那么应该使用 toggleOpen = true 参数来控制自动切换,而不是手动调用 ClosePopup。
二、SysFct.OpenScreenInPopup() 的语法为:
SysFct.OpenScreenInPopup(popupWindowName, screenName, toggleOpen, caption, left, top, hideCloseButton[, parentScreenPath]);
各参数含义如下:
popupWindowName:类型为String,弹出窗口的唯一标识名称(如 "MachineState"),用于后续通过脚本控制该窗口(例如关闭、查找等)。必须在父画面中唯一。
screenName:类型为String,要在弹窗中打开的画面名称(如 "tc"),必须是项目中存在的画面名。
toggleOpen:类型为Bool,是否启用“切换”模式。
true:如果窗口已打开,则关闭它;否则打开。
false:如果已打开,不做任何操作 。 caption String 弹出窗口的标题栏文字,空字符串表示无标题。 left, top Int32 弹窗左上角相对于屏幕左上角的位置(像素单位)。 hideCloseButton Boo是否隐藏关闭按钮:
true:隐藏;
false:显示。 parentScreenPath String (可选) 父画面路径。若省略,则弹窗为全局窗口;若指定,则父画面关闭时自动关闭弹窗。
因此,MachineState 是您为这个弹出窗口定义的运行时实例名称,用于唯一标识该弹窗,与画面名称 tc 不同。
三、程序借鉴
// 切换弹窗打开/关闭状态
HMIRuntime.UI.SysFct.OpenScreenInPopup("MachineState", "tc", true, "设备状态", 150, 200, false);
// 根据当前弹窗是否存在来改变按钮颜色
let popup = HMIRuntime.UI.FindItem("/MachineState");
if (popup && popup.Visible) {
Screen.FindItem('圆_1').BackColor = 0xFF00FF00; // 绿色表示已打开
} else {
Screen.FindItem('圆_1').BackColor = 0xFFFFAA00; // 橙色表示已关闭
}
参考文件的链接:https://docs.tia.siemens.cloud/r/zh-cn/v20/wincc-unified-javascript-对象模型-rt-unified/hmiruntime-rt-unified/ui-rt-unified/sysfct-rt-unified/sysfct.openscreeninpopup-rt-unified
等您来回答
换一换
{{item.CoinValue}}西币
{{item.VisitNum}}人想问
本版相关问题
换一换
专家置评
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!

西门子商城